Creating your own NodeProperties plugin ( customize search results objects )
You can create your own NodeProperties.
Conditions:
- The new NodeProperties class must implement the “NodeProperties” interface.
- The new NodeProperties class must be declared in the package “com.openkm.plugin.properties”.
- The new NodeProperties class must be annotated with “@PluginImplementation”.
- The new NodeProperties class must extend “BasePlugin”.
NodeProperties interface:
package com.openkm.plugin.properties;
import com.openkm.bean.Document;import com.openkm.bean.Folder;import com.openkm.bean.Mail;import com.openkm.bean.Record;import com.openkm.core.DatabaseException;import com.openkm.core.PathNotFoundException;import com.openkm.core.RepositoryException;import com.openkm.db.bean.NodeDocument;import com.openkm.db.bean.NodeFolder;import com.openkm.db.bean.NodeMail;import com.openkm.db.bean.NodeRecord;import net.xeoh.plugins.base.Plugin;
/** * NodeProperties */public interface NodeProperties extends Plugin {
/** * Get document properties */ Document getProperties(String user, NodeDocument nDocument) throws PathNotFoundException, DatabaseException, RepositoryException;
/** * Get folder properties */ Folder getProperties(String user, NodeFolder nFolder) throws PathNotFoundException, DatabaseException, RepositoryException;
/** * Get mail properties */ Mail getProperties(String user, NodeMail nMail) throws PathNotFoundException, DatabaseException, RepositoryException;
/** * Get record properties */ Record getProperties(String user, NodeRecord nRecord) throws PathNotFoundException, DatabaseException, RepositoryException;}The new class must be loaded into the package com.openkm.plugin.properties because the application plugin system will try to load it from there.
Method description
Section titled “Method description”| Method | Type | Description |
|---|---|---|
| getProperties(String user, NodeDocument nDocument) | Document | Defines which values are loaded in the Document object returned by the search engine. |
| getProperties(String user, NodeFolder nFolder) | Folder | Defines which values are loaded in the Folder object returned by the search engine. |
| getProperties(String user, NodeMail nMail) | Defines which values are loaded in the Mail object returned by the search engine. | |
| getProperties(String user, NodeRecord nRecord) | Record | Defines which values are loaded in the Record object returned by the search engine. |
Example of NodeProperties implementation
Section titled “Example of NodeProperties implementation”package com.openkm.plugin.properties;
import com.openkm.bean.Document;import com.openkm.bean.Folder;import com.openkm.bean.Mail;import com.openkm.bean.Record;import com.openkm.core.DatabaseException;import com.openkm.core.PathNotFoundException;import com.openkm.core.RepositoryException;import com.openkm.db.bean.NodeDocument;import com.openkm.db.bean.NodeFolder;import com.openkm.db.bean.NodeMail;import com.openkm.db.bean.NodeRecord;import com.openkm.plugin.BasePlugin;import net.xeoh.plugins.base.annotations.PluginImplementation;
/** * UuidNodeProperties */@PluginImplementationpublic class UuidNodeProperties extends BasePlugin implements NodeProperties {
/** * Get document properties */ @Override public Document getProperties(String user, NodeDocument nDocument) throws PathNotFoundException, DatabaseException, RepositoryException { Document node = new Document(); node.setUuid(nDocument.getUuid()); return node; }
/** * Get folder properties */ @Override public Folder getProperties(String user, NodeFolder nFolder) throws PathNotFoundException, DatabaseException, RepositoryException { Folder node = new Folder(); node.setUuid(nFolder.getUuid()); return node; }
/** * Get mail properties */ @Override public Mail getProperties(String user, NodeMail nMail) throws PathNotFoundException, DatabaseException, RepositoryException { Mail node = new Mail(); node.setUuid(nMail.getUuid()); return node; }
/** * Get record properties */ @Override public Record getProperties(String user, NodeRecord nRecord) throws PathNotFoundException, DatabaseException, RepositoryException { Record node = new Record(); node.setUuid(nRecord.getUuid()); return node; }
}