Skip to content
This repository was archived by the owner on Jul 26, 2021. It is now read-only.

added search initial #85

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@
"@angular/platform-browser": "^8.2.4",
"@angular/platform-browser-dynamic": "^8.2.4",
"@angular/router": "^8.2.4",
"@groupdocs.examples.angular/annotation": "^0.6.1",
"@groupdocs.examples.angular/comparison": "^0.6.1",
"@groupdocs.examples.angular/conversion": "^0.6.1",
"@groupdocs.examples.angular/editor": "^0.6.1",
"@groupdocs.examples.angular/signature": "^0.6.1",
"@groupdocs.examples.angular/viewer": "^0.6.1",
"@nrwl/angular": "^8.12.6",
"@groupdocs.examples.angular/annotation": "^0.6.3",
"@groupdocs.examples.angular/comparison": "^0.6.3",
"@groupdocs.examples.angular/conversion": "^0.6.3",
"@groupdocs.examples.angular/editor": "^0.6.3",
"@groupdocs.examples.angular/signature": "^0.6.3",
"@groupdocs.examples.angular/viewer": "^0.6.3",
"@nrwl/angular": "^8.12.7",
"common-components": "^1.0.5",
"core-js": "^2.6.11",
"rxjs": "~6.4.0",
Expand Down
16 changes: 15 additions & 1 deletion configuration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -218,4 +218,18 @@ editor:
# Absolute path to default document
defaultDocument:
# Enable / disable new document creation
createNewFile: true
createNewFile: true

################################################
# GroupDocs.Search configurations
################################################
search:
# Files directory path
# Absolute or relative path to files directory
filesDirectory: DocumentSamples/Search
# Fonts path
# Absolute path to custom fonts directory
fontsDirectory:
# Default document
# Absolute path to default document
defaultDocument:
5 changes: 5 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,11 @@
<version>19.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>19.12</version>
</dependency>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-viewer</artifactId>
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/com/groupdocs/ui/config/DefaultDirectories.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public class DefaultDirectories {
public static final String ANNOTATION = "Annotation";
public static final String CONVERSION = "Conversion";
public static final String EDITOR = "Editor";
public static final String SEARCH = "Search";

public static String defaultLicenseDirectory() {
Path defaultLicFolder = FileSystems.getDefault().getPath(LICENSES).toAbsolutePath();
Expand Down Expand Up @@ -57,6 +58,10 @@ public static String defaultEditorDirectory() {
return getDefaultFilesDir(EDITOR);
}

public static String defaultSearchDirectory() {
return getDefaultFilesDir(SEARCH);
}

public static String getDefaultFilesDir(String folder) {
String dir = DOCUMENT_SAMPLES + File.separator + folder;
Path path = FileSystems.getDefault().getPath(dir).toAbsolutePath();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.groupdocs.ui.search.config;

import com.groupdocs.ui.config.CommonConfiguration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import javax.annotation.PostConstruct;

import static com.groupdocs.ui.config.DefaultDirectories.*;

@Component
public class SearchConfiguration extends CommonConfiguration {

@Value("${search.filesDirectory}")
private String filesDirectory;

@Value("${search.defaultDocument}")
private String defaultDocument;

@Value("${search.fontsDirectory}")
private String fontsDirectory;

@PostConstruct
public void init() {
this.filesDirectory = StringUtils.isEmpty(this.filesDirectory) ? defaultSearchDirectory() : relativePathToAbsolute(this.filesDirectory);
}

public String getFilesDirectory() {
return filesDirectory;
}

public void setFilesDirectory(String filesDirectory) {
this.filesDirectory = filesDirectory;
}

public String getDefaultDocument() {
return defaultDocument;
}

public void setDefaultDocument(String defaultDocument) {
this.defaultDocument = defaultDocument;
}

public String getFontsDirectory() {
return fontsDirectory;
}

public void setFontsDirectory(String fontsDirectory) {
this.fontsDirectory = fontsDirectory;
}

@Override
public String toString() {
return super.toString() +
"SearchConfiguration{" +
"filesDirectory='" + filesDirectory + '\'' +
", defaultDocument='" + defaultDocument + '\'' +
", fontsDirectory='" + fontsDirectory + '\'' +
'}';
}
}
104 changes: 104 additions & 0 deletions src/main/java/com/groupdocs/ui/search/controller/SearchController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
package com.groupdocs.ui.search.controller;

import com.groupdocs.ui.model.request.FileTreeRequest;
import com.groupdocs.ui.model.request.LoadDocumentRequest;
import com.groupdocs.ui.model.response.FileDescriptionEntity;
import com.groupdocs.ui.model.response.UploadedDocumentEntity;
import com.groupdocs.ui.search.config.SearchConfiguration;
import com.groupdocs.ui.search.model.IndexDocumentResult;
import com.groupdocs.ui.search.model.SearchDocumentResult;
import com.groupdocs.ui.search.model.SearchRequest;
import com.groupdocs.ui.search.service.SearchService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Nullable;
import java.util.List;

import static com.groupdocs.ui.util.Utils.uploadFile;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
import static org.springframework.http.MediaType.MULTIPART_FORM_DATA_VALUE;

/**
* SearchController
*
* @author Aspose Pty Ltd
*/
@Controller
@RequestMapping(value = "/search")
public class SearchController {
private static final Logger logger = LoggerFactory.getLogger(SearchController.class);

private SearchService searchService;

public SearchController(@Autowired SearchService searchService) {
this.searchService = searchService;
}

@RequestMapping(method = RequestMethod.GET, value = "/loadConfig", produces = APPLICATION_JSON_VALUE)
@ResponseBody
public SearchConfiguration loadConfig() {
return searchService.getSearchConfiguration();
}

/**
* Get files and directories
*
* @param fileTreeRequest request's object with specified path
* @return files and directories list
*/
@RequestMapping(value = "/loadFileTree", method = RequestMethod.POST, produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_JSON_VALUE)
@ResponseBody
public List<FileDescriptionEntity> loadFileTree(@RequestBody FileTreeRequest fileTreeRequest) {
return searchService.getFileList(fileTreeRequest);
}

/**
* Get document description
*
* @return document description
*/
@RequestMapping(value = "/loadDocumentDescription", method = RequestMethod.POST, produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_JSON_VALUE)
@ResponseBody
public IndexDocumentResult loadDocumentDescription(@RequestBody LoadDocumentRequest loadDocumentRequest) {
return searchService.getDocumentDescription(loadDocumentRequest);
}

/**
* Get document description
*
* @return document description
*/
@RequestMapping(value = "/search", method = RequestMethod.POST, produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_JSON_VALUE)
@ResponseBody
public List<SearchDocumentResult> loadDocumentDescription(@RequestBody SearchRequest searchRequest) {
return searchService.search(searchRequest);
}

/**
* Upload document
*
* @param content file data
* @param url url for document
* @param rewrite flag for rewriting file
* @return uploaded document object (the object contains uploaded document guid)
*/
@RequestMapping(value = "/uploadDocument", method = RequestMethod.POST, produces = APPLICATION_JSON_VALUE, consumes = MULTIPART_FORM_DATA_VALUE)
@ResponseBody
public UploadedDocumentEntity uploadDocument(@Nullable @RequestParam("file") MultipartFile content,
@RequestParam(value = "url", required = false) String url,
@RequestParam("rewrite") Boolean rewrite) {
// get documents storage path
String documentStoragePath = searchService.getSearchConfiguration().getFilesDirectory();
// save the file
String pathname = uploadFile(documentStoragePath, content, url, rewrite);
// create response data
UploadedDocumentEntity uploadedDocument = new UploadedDocumentEntity();
uploadedDocument.setGuid(pathname);
return uploadedDocument;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.groupdocs.ui.search.model;

import com.groupdocs.ui.model.response.LoadDocumentEntity;

public class IndexDocumentResult extends LoadDocumentEntity {

private String indexStatus;

public String getIndexStatus() {
return indexStatus;
}

public void setIndexStatus(String indexStatus) {
this.indexStatus = indexStatus;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.groupdocs.ui.search.model;

import com.groupdocs.search.results.FoundDocumentField;

public class SearchDocumentResult {

private FoundDocumentField[] foundFields;
private String filePath;

public void setFoundFields(FoundDocumentField[] foundFields) {
this.foundFields = foundFields;
}

public FoundDocumentField[] getFoundFields() {
return foundFields;
}

public void setFilePath(String filePath) {
this.filePath = filePath;
}

public String getFilePath() {
return filePath;
}
}
22 changes: 22 additions & 0 deletions src/main/java/com/groupdocs/ui/search/model/SearchRequest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.groupdocs.ui.search.model;

public class SearchRequest {
private String query;
private String[] guids;

public String getQuery() {
return query;
}

public void setQuery(String query) {
this.query = query;
}

public String[] getGuids() {
return guids;
}

public void setGuids(String[] guids) {
this.guids = guids;
}
}
21 changes: 21 additions & 0 deletions src/main/java/com/groupdocs/ui/search/service/SearchService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.groupdocs.ui.search.service;

import com.groupdocs.ui.model.request.FileTreeRequest;
import com.groupdocs.ui.model.request.LoadDocumentRequest;
import com.groupdocs.ui.model.response.FileDescriptionEntity;
import com.groupdocs.ui.search.config.SearchConfiguration;
import com.groupdocs.ui.search.model.IndexDocumentResult;
import com.groupdocs.ui.search.model.SearchDocumentResult;
import com.groupdocs.ui.search.model.SearchRequest;

import java.util.List;

public interface SearchService {
SearchConfiguration getSearchConfiguration();

List<FileDescriptionEntity> getFileList(FileTreeRequest fileTreeRequest);

IndexDocumentResult getDocumentDescription(LoadDocumentRequest loadDocumentRequest);

List<SearchDocumentResult> search(SearchRequest searchRequest);
}
Loading