Skip to content

Commit

Permalink
add support for simple search
Browse files Browse the repository at this point in the history
  • Loading branch information
ruan-wei committed May 30, 2016
1 parent 7b15740 commit 8419ef4
Show file tree
Hide file tree
Showing 53 changed files with 1,081 additions and 554 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.emc.documentum.rest.client.sample.client.DCTMRestClientSample</mainClass>
<mainClass>com.emc.documentum.rest.client.sample.DCTMRestClientSample</mainClass>
</manifest>
</archive>
</configuration>
Expand All @@ -149,7 +149,7 @@
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.emc.documentum.rest.client.sample.client.DCTMRestClientSample</mainClass>
<mainClass>com.emc.documentum.rest.client.sample.DCTMRestClientSample</mainClass>
</transformer>
</transformers>
<shadedArtifactAttached>true</shadedArtifactAttached>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
/*
* Copyright (c) 2016. EMC Corporation. All Rights Reserved.
*/
package com.emc.documentum.rest.client.sample.client;
package com.emc.documentum.rest.client.sample;

import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.emc.documentum.rest.client.sample.client.DCTMRestClient;
import com.emc.documentum.rest.client.sample.client.DCTMRestClientBinding;
import com.emc.documentum.rest.client.sample.client.DCTMRestClientBuilder;
import com.emc.documentum.rest.client.sample.client.util.Randoms;
import com.emc.documentum.rest.client.sample.model.Entry;
import com.emc.documentum.rest.client.sample.model.Facet;
import com.emc.documentum.rest.client.sample.model.FacetValue;
import com.emc.documentum.rest.client.sample.model.Feed;
import com.emc.documentum.rest.client.sample.model.FolderLink;
import com.emc.documentum.rest.client.sample.model.HomeDocument;
Expand All @@ -24,6 +29,8 @@
import com.emc.documentum.rest.client.sample.model.Repository;
import com.emc.documentum.rest.client.sample.model.RestObject;
import com.emc.documentum.rest.client.sample.model.RestType;
import com.emc.documentum.rest.client.sample.model.SearchEntry;
import com.emc.documentum.rest.client.sample.model.SearchFeed;
import com.emc.documentum.rest.client.sample.model.ValueAssistant;

import static com.emc.documentum.rest.client.sample.model.LinkRelation.CHILD_LINKS;
Expand Down Expand Up @@ -53,9 +60,9 @@ public static void main(String[] args) throws Exception {
String bindingStr = read(sb.toString(), "XML");
DCTMRestClientBinding binding = DCTMRestClientBinding.valueOf(bindingStr.toUpperCase());
String contextRoot = read("Please input the REST context path:", "http://localhost:8080/dctm-rest");
String repository = read("Please input the repository name:", "REPO");
String username = read("Please input the username:", "dmadmin");
String password = read("Please input the password:", "password");
String repository = read("Please input the repository name:");
String username = read("Please input the username:");
String password = read("Please input the password:");
String useFormatExtension = read("Please input the whether add format extension .xml or .json for URI:", "false");
String debug = read("Please input whether print debug information:", "false");

Expand Down Expand Up @@ -90,7 +97,8 @@ public static void main(String[] args) throws Exception {
.append("12 Get Relation Typs(s) and Relation Create/Delete/Get").append(NEWLINE)
.append("13 Get Format(s)").append(NEWLINE)
.append("14 Get Network Location(s)").append(NEWLINE)
.append("15 Copy, Move, Link, Unlink").append(NEWLINE);
.append("15 Copy, Move, Link, Unlink").append(NEWLINE)
.append("16 Simple Search").append(NEWLINE);

while(true) {
String sample = read(sb.toString());
Expand Down Expand Up @@ -147,6 +155,9 @@ public static void main(String[] args) throws Exception {
case 15:
copyMoveLinkUnlink();
break;
case 16:
search();
break;
default:
System.out.println("Unsupported " + op);
}
Expand Down Expand Up @@ -206,10 +217,7 @@ private static void navigation() {

printStep("get home document resource");
HomeDocument home = client.getHomeDocument();
List<Link> list = home.getLinks();
for(Link l : list) {
System.out.println(l.getRel() + " -> " + l.getHref());
}
printLinks(home);
printNewLine();

printStep("get repositories collection");
Expand Down Expand Up @@ -645,10 +653,7 @@ private static void type() {

printStep("get type resource");
RestType type = client.getType("dm_document");
List<Link> list = type.getLinks();
for(Link l : list) {
System.out.println(l.getRel() + " -> " + l.getHref());
}
printLinks(type);
System.out.println(type.getName() + " " + type.getCategory() + " " + type.getParent()
+ (type.getSharedParent() == null ? "" : type.getSharedParent()));
for(Map<String, Object> map : type.getProperties()) {
Expand Down Expand Up @@ -1060,6 +1065,49 @@ private static void copyMoveLinkUnlink() {
printNewLine();
}

/**
* samples to search
*/
private static void search() {
System.out.println("start Search samples");

printStep("simple search");
String searchValue = read("Please input the value you want to search:");
SearchFeed<RestObject> result = client.search(searchValue);
for(SearchEntry<RestObject> e : result.getEntries()) {
System.out.println(e.getTitle() + " -> " + e.getContentSrc());
System.out.println("score:" + e.getScore() + ", terms:" + e.getTerms());
}
printNewLine();

printStep("simple search with facet");
result = client.search(searchValue, "facet", "r_modify_date");
for(SearchEntry<RestObject> e : result.getEntries()) {
System.out.println(e.getTitle() + " -> " + e.getContentSrc());
System.out.println("score:" + e.getScore() + ", terms:" + e.getTerms());
}
for(Facet f : result.getFacets()) {
System.out.println("facet id:" + f.getId() + ", facet label:" + f.getLabel());
for(FacetValue fv : f.getValues()) {
System.out.println("facet-id:" + fv.getFacetId() + ", facet-value-id:" + fv.getId()
+ ", facet-value-count:" + fv.getCount() + "facet-value-constraint:" + fv.getConstraint());
printLinks(fv);
}
}
printNewLine();

printStep("simple search with inline result");
result = client.search(searchValue, "inline", "true");
for(SearchEntry<RestObject> e : result.getEntries()) {
System.out.println("score:" + e.getScore() + ", terms:" + e.getTerms());
printRestObject(e.getContentObject());
}
printNewLine();

System.out.println("finish Search samples");
printNewLine();
}

private static void printEntryContentSrc(Feed<?> feed) {
for(Entry<?> e : feed.getEntries()) {
System.out.println(e.getTitle() + " -> " + e.getContentSrc());
Expand Down Expand Up @@ -1095,6 +1143,18 @@ private static void printLinkRel(Linkable linkable, LinkRelation... rels) {
}
}

private static void printLinks(Linkable linkable) {
printLinks(linkable.getLinks());
}

private static void printLinks(List<Link> links) {
if(links != null) {
for(Link l : links) {
System.out.println(l.getRel() + " -> " + l.getHref());
}
}
}

private static void printStep(String step) {
System.out.println("-------------" + step);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import com.emc.documentum.rest.client.sample.model.Repository;
import com.emc.documentum.rest.client.sample.model.RestObject;
import com.emc.documentum.rest.client.sample.model.RestType;
import com.emc.documentum.rest.client.sample.model.SearchFeed;
import com.emc.documentum.rest.client.sample.model.ValueAssistant;
import com.emc.documentum.rest.client.sample.model.ValueAssistantRequest;

Expand Down Expand Up @@ -73,6 +74,14 @@ public interface DCTMRestClient {
*/
public Feed<RestObject> dql(String dql, String... params);

/**
* execute the simple search
* @param search
* @param params
* @return
*/
public SearchFeed<RestObject> search(String search, String... params);

/**
* @param params
* @return the cabinets feed based on query parameters
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import com.emc.documentum.rest.client.sample.model.Repository;
import com.emc.documentum.rest.client.sample.model.RestObject;
import com.emc.documentum.rest.client.sample.model.RestType;
import com.emc.documentum.rest.client.sample.model.SearchFeed;
import com.emc.documentum.rest.client.sample.model.ValueAssistant;
import com.emc.documentum.rest.client.sample.model.ValueAssistantRequest;
import com.emc.documentum.rest.client.sample.model.json.JsonFeeds;
Expand Down Expand Up @@ -71,6 +72,7 @@
import static com.emc.documentum.rest.client.sample.model.LinkRelation.RELATIONS;
import static com.emc.documentum.rest.client.sample.model.LinkRelation.RELATION_TYPES;
import static com.emc.documentum.rest.client.sample.model.LinkRelation.REPOSITORIES;
import static com.emc.documentum.rest.client.sample.model.LinkRelation.SEARCH;
import static com.emc.documentum.rest.client.sample.model.LinkRelation.SELF;
import static com.emc.documentum.rest.client.sample.model.LinkRelation.SHARED_PARENT;
import static com.emc.documentum.rest.client.sample.model.LinkRelation.TYPES;
Expand Down Expand Up @@ -136,6 +138,13 @@ public Feed<RestObject> dql(String dql, String... params) {
return (Feed<RestObject>)feed;
}

@SuppressWarnings("unchecked")
@Override
public SearchFeed<RestObject> search(String search, String... params) {
SearchFeed<? extends RestObject> feed = get(getRepository().getHref(SEARCH), true, JsonFeeds.SearchFeed.class, UriHelper.append(params, "q", search));
return (SearchFeed<RestObject>)feed;
}

@Override
public Feed<RestObject> getCabinets(String... params) {
Repository repository = getRepository();
Expand Down Expand Up @@ -488,6 +497,7 @@ protected void initRestTemplate(RestTemplate restTemplate) {
for(HttpMessageConverter<?> c : restTemplate.getMessageConverters()) {
if(c instanceof MappingJackson2HttpMessageConverter) {
((MappingJackson2HttpMessageConverter)c).getObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
// ((MappingJackson2HttpMessageConverter)c).getObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
} else if(c instanceof FormHttpMessageConverter) {
try {
Field pcField = FormHttpMessageConverter.class.getDeclaredField("partConverters");
Expand All @@ -496,6 +506,7 @@ protected void initRestTemplate(RestTemplate restTemplate) {
for(HttpMessageConverter<?> pc : partConverters) {
if(pc instanceof MappingJackson2HttpMessageConverter) {
((MappingJackson2HttpMessageConverter)pc).getObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
// ((MappingJackson2HttpMessageConverter)pc).getObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
break;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import com.emc.documentum.rest.client.sample.model.Repository;
import com.emc.documentum.rest.client.sample.model.RestObject;
import com.emc.documentum.rest.client.sample.model.RestType;
import com.emc.documentum.rest.client.sample.model.SearchFeed;
import com.emc.documentum.rest.client.sample.model.ValueAssistant;
import com.emc.documentum.rest.client.sample.model.ValueAssistantRequest;
import com.emc.documentum.rest.client.sample.model.xml.jaxb.JaxbAspectType;
Expand All @@ -48,6 +49,7 @@
import com.emc.documentum.rest.client.sample.model.xml.jaxb.JaxbRelation;
import com.emc.documentum.rest.client.sample.model.xml.jaxb.JaxbRelationType;
import com.emc.documentum.rest.client.sample.model.xml.jaxb.JaxbRepository;
import com.emc.documentum.rest.client.sample.model.xml.jaxb.JaxbSearchFeed;
import com.emc.documentum.rest.client.sample.model.xml.jaxb.JaxbSysObject;
import com.emc.documentum.rest.client.sample.model.xml.jaxb.JaxbType;
import com.emc.documentum.rest.client.sample.model.xml.jaxb.JaxbUser;
Expand Down Expand Up @@ -83,6 +85,7 @@
import static com.emc.documentum.rest.client.sample.model.LinkRelation.RELATIONS;
import static com.emc.documentum.rest.client.sample.model.LinkRelation.RELATION_TYPES;
import static com.emc.documentum.rest.client.sample.model.LinkRelation.REPOSITORIES;
import static com.emc.documentum.rest.client.sample.model.LinkRelation.SEARCH;
import static com.emc.documentum.rest.client.sample.model.LinkRelation.SELF;
import static com.emc.documentum.rest.client.sample.model.LinkRelation.SHARED_PARENT;
import static com.emc.documentum.rest.client.sample.model.LinkRelation.TYPES;
Expand Down Expand Up @@ -145,6 +148,11 @@ public Feed<RestObject> dql(String dql, String... params) {
return get(getRepository().getHref(SELF), true, JaxbFeed.class, UriHelper.append(params, "dql", dql));
}

@Override
public SearchFeed<RestObject> search(String search, String... params) {
return get(getRepository().getHref(SEARCH), true, JaxbSearchFeed.class, UriHelper.append(params, "q", search));
}

@Override
public Feed<RestObject> getCabinets(String... params) {
Repository repository = getRepository();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,9 @@
*/
package com.emc.documentum.rest.client.sample.model;

import com.emc.documentum.rest.client.sample.model.json.JsonAuthor;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;


/**
* the class represents the Author of Feed and Entry
*/
@JsonTypeInfo(use=Id.CLASS, defaultImpl=JsonAuthor.class)
public interface Author {

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,9 @@

import java.util.List;

import com.emc.documentum.rest.client.sample.model.json.JsonEntry;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;

/**
* the class represents the entry of a feed
*/
@JsonTypeInfo(use=Id.CLASS, defaultImpl=JsonEntry.class)
public interface Entry<T extends Linkable> extends Linkable {

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
* Copyright (c) 2016. EMC Corporation. All Rights Reserved.
*/
package com.emc.documentum.rest.client.sample.model;

import java.util.List;

/**
* represents search facet provided by REST server
*/
public interface Facet extends Linkable {
public String getId();
public String getLabel();
public List<FacetValue> getValues();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*
* Copyright (c) 2016. EMC Corporation. All Rights Reserved.
*/
package com.emc.documentum.rest.client.sample.model;

import java.util.List;

/**
* represents search facet value provided by REST server
*/
public interface FacetValue extends Linkable {
public String getFacetId();
public String getId();
public int getCount();
public String getConstraint();
public List<Facet> getFacets();
}
Loading

0 comments on commit 8419ef4

Please sign in to comment.