PropertyGroup samples
Basics
In older OpenKM versions we called "Metadata Groups" "Property Groups".
Although we understand this name does not help much to identify these methods as metadata-related, for historical reasons we continue to maintain the nomenclature.
For more information about Metadata.
The class com.openkm.sdk4j.util.ISO8601 should be used to set and parse metadata date fields. Metadata field values of type date are stored in the application in ISO-8601 basic format.
To convert the retrieved metadata field of type date to a valid date, use:
Calendar cal = ISO8601.parseBasic(metadataFieldValue);
To save the date value in the metadata field of type date, use:
Calendar cal = Calendar.getInstance(); // Present date
String metadataFieldValue = ISO8601.formatBasic(cal);
// metadataFieldValue can be saved into repository metadata field of type date
Suggested code sample
First, you must create the webservice object:
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
Then you should log in using the "login" method. You can access the "login" method from the webservice object "ws" as shown below:
ws.login(user, password);
Once you are logged in to the webservices, the session is kept in the webservice object. Then you can use the other API methods.
At this point you can use all the Property Group methods from the "propertyGroup" class as shown below:
ws.propertyGroup.addGroup("8cd1e072-8595-4dd3-b121-41d622c43f08", "okg:consulting", propertiesMap);
Methods
addGroup
Description:
Method | Return values | Description |
---|---|---|
addGroup(String uuid, String grpName, Map<String, String> propertiesMap) |
void |
Adds an empty metadata group to a node. |
The grpName should be a valid Metadata group name. It is not mandatory to set all field values in the propertiesMap parameter; it is enough to include the fields whose values you wish to change. The sample below is based on this Metadata group definition:
To add several values to a metadata field of type "multiple" like this:
You should do:
Where \"t1\" and \"t2\" are valid values and character "," is used as separator. Another option:
|
Example:
package com.openkm;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.impl.OKMWebservices;
import com.openkm.sdk4j.util.ISO8601;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
Map<String, String> properties = new HashMap<>();
properties.put("okp:technology.type", "[ \"t1\", \"t2\" ]");
Calendar cal = Calendar.getInstance();
// Value must be converted to String ISO 8601 compliant
properties.put("okp:technology.date", ISO8601.formatBasic(cal));
properties.put("okp:technology.comment", "comment sample");
properties.put("okp:technology.description", "description sample");
properties.put("okp:technology.language", "[ \"java\" ]");
properties.put("okp:technology.important", String.valueOf(true));
ws.propertyGroup.addGroup("4a3b1c1b-c880-45a3-a6ff-2c8b7c5adfa5", "okg:technology", properties);
} catch (Exception e) {
e.printStackTrace();
}
}
}
removeGroup
Description:
Method | Return values | Description |
---|---|---|
removeGroup(String uuid, String grpName) |
void |
Removes a metadata group of a node. |
The grpName should be a valid Metadata group name. |
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
ws.propertyGroup.removeGroup("8cd1e072-8595-4dd3-b121-41d622c43f08", "okg:consulting");
} catch (Exception e) {
e.printStackTrace();
}
}
}
getGroups
Description:
Method | Return values | Description |
---|---|---|
getGroups(String uuid) |
List<PropertyGroup> |
Retrieves a list of metadata groups assigned to a node. |
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.bean.PropertyGroup;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
for (PropertyGroup pGroup : ws.propertyGroup.getGroups("8cd1e072-8595-4dd3-b121-41d622c43f08")) {
System.out.println(pGroup);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
getAllGroups
Description:
Method | Return values | Description |
---|---|---|
getAllGroups() |
List<PropertyGroup> |
Retrieves a list of all metadata groups set into the application. |
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.bean.PropertyGroup;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
for (PropertyGroup pGroup : ws.propertyGroup.getAllGroups()) {
System.out.println(pGroup);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
getPropertyGroupForm
Description:
Method | Return values | Description |
---|---|---|
getPropertyGroupForm(String grpName) |
List<FormElement> |
Retrieves a list of all metadata group element definitions. |
The grpName should be a valid Metadata group name. The method is usually used to display empty form elements for creating new metadata values. |
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.bean.form.FormElement;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
for (FormElement fElement : ws.propertyGroup.getPropertyGroupForm("okg:consulting")) {
System.out.println(fElement);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
getPropertyGroupFormDefinition
Description:
Method | Return values | Description |
---|---|---|
getPropertyGroupFormDefinition(String grpName) |
List<FormElement> |
Retrieves a list of all metadata group element definitions. |
The grpName should be a valid Metadata group name. The method is usually used to display empty form elements for creating new metadata values. |
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.bean.form.FormElement;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
for (FormElement fElement : ws.propertyGroup.getPropertyGroupFormDefinition("okg:consulting")) {
System.out.println(fElement);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
getPropertyGroupFormDefinition
Description:
Method | Return values | Description |
---|---|---|
getPropertyGroupFormDefinition(String grpName, String uuid) |
List<FormElement> |
Retrieves a list of all metadata group element definitions. |
The grpName should be a valid Metadata group name. The method is usually used to display empty form elements for creating new metadata values. |
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.bean.form.FormElement;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
for (FormElement fElement : ws.propertyGroup.getPropertyGroupFormDefinition("okg:consulting", "8cd1e072-8595-4dd3-b121-41d622c43f08")) {
System.out.println(fElement);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
getPropertyGroupForm
Description:
Method | Return values | Description |
---|---|---|
getPropertyGroupForm(String uuid, String grpName) |
List<FormElement> |
Retrieves a list of metadata values of a node. |
The grpName should be a valid Metadata group name. |
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.bean.form.FormElement;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
for (FormElement fElement : ws.propertyGroup.getPropertyGroupForm("8cd1e072-8595-4dd3-b121-41d622c43f08","okg:consulting")) {
System.out.println(fElement);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
setProperties
Description:
Method | Return values | Description |
---|---|---|
setProperties(String uuid, String grpName, Map<String, String> properties) |
void |
Changes the metadata group values of a node. |
The grpName should be a valid Metadata group name. Before changing metadata, you should have the group added to the node (see addGroup method); otherwise an error will be raised. It is not mandatory to set all field values in the properties parameterMap; it is enough to include the fields whose values you wish to change. The sample below is based on this Metadata group definition:
To add several values to a metadata field of type "multiple" like this:
You should do:
Where \"one\" and \"two\" are valid values and character "," is used as separator. Another option:
|
Example:
package com.openkm;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.impl.OKMWebservices;
import com.openkm.sdk4j.util.ISO8601;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
Map<String, String> properties = new HashMap<>();
properties.put("okp:technology.type", "[ \"t1\", \"t2\" ]");
Calendar cal = Calendar.getInstance();
// Value must be converted to String ISO 8601 compliant
properties.put("okp:technology.date", ISO8601.formatBasic(cal));
properties.put("okp:technology.comment", "comment sample");
properties.put("okp:technology.description", "description sample");
properties.put("okp:technology.language", "[ \"java\" ]");
properties.put("okp:technology.important", String.valueOf(true));
ws.propertyGroup.setProperties("8cd1e072-8595-4dd3-b121-41d622c43f08", "okg:consulting", properties);
} catch (Exception e) {
e.printStackTrace();
}
}
}
hasGroup
Description:
Method | Return values | Description |
---|---|---|
hasGroup(String uuid, String grpName) |
Boolean |
Returns a boolean that indicate if the node has or not a metadata group. |
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
System.out.println("Have metadata group:" + ws.propertyGroup.hasGroup("8cd1e072-8595-4dd3-b121-41d622c43f08", "okg:consulting"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
getRegisteredDefinition
Description:
Method | Return values | Description |
---|---|---|
getRegisteredDefinition() |
String |
Returns the XML Metadata groups definition. |
The method can only be executed by a super user (ROLE_ADMIN member user). |
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
System.out.println(ws.propertyGroup.getRegisteredDefinition());
} catch (Exception e) {
e.printStackTrace();
}
}
}
registerDefinition
Description:
Method | Return values | Description |
---|---|---|
registerDefinition(InputStream is, String name) |
void |
Sets the XML Metadata groups definition in the repository. |
The method only can be executed by super user granted ( ROLE_ADMIN member user). |
Example:
package com.openkm;
import java.io.FileInputStream;
import java.io.InputStream;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
InputStream is = new FileInputStream("/home/openkm/PropertyGroups.xml");
ws.propertyGroup.registerDefinition(is, "test");
} catch (Exception e) {
e.printStackTrace();
}
}
}
getSuggestions
Description:
Method | Return values | Description |
---|---|---|
getSuggestions(String uuid, String grpName, String propName) |
List<String> |
Retrieves a list of suggested metadata field values. |
The propName parameter should be a Metadata Select field type. More information at Creating your own Suggestion Analyzer and Metadata Select field.
The sample below is based on this Metadata group definition:
|
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
for (String value : ws.propertyGroup.getSuggestions("8cd1e072-8595-4dd3-b121-41d622c43f08", "okg:technology", "okp:technology.language")) {
System.out.println(value);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
getProperties
Description:
Method | Return values | Description |
---|---|---|
getProperties(String uuid, String grpName) |
Map<String, String> |
Retrieves a map - (key, value) pairs - with Metadata group values of a node. |
Example:
package com.openkm;
import java.util.HashMap;
import java.util.Map;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
Map<String, String> properties = new HashMap<>();
properties = ws.propertyGroup.getProperties("8cd1e072-8595-4dd3-b121-41d622c43f08", "okg:technology");
for (String key : properties.keySet()) {
System.out.println(key + " > " + properties.get(key));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
getGroupsByVersion
Description:
Method | Return values | Description |
---|---|---|
getGroupsByVersion(String uuid, String versionName) |
List<PropertyGroup> |
Retrieves a list of metadata groups assigned to a specific version of a node. |
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.bean.PropertyGroup;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
for (PropertyGroup pGroup : ws.propertyGroup.getGroupsByVersion("118cb06b-9df7-4d59-bed9-ba986a4f8e0b", "1.3")) {
System.out.println(pGroup);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
getPropertiesByVersion
Description:
Method | Return values | Description |
---|---|---|
getPropertiesByVersion(String uuid, String grpName, String versionName) |
Map<String, String> |
Retrieves a map - (key,value) pairs - with Metadata group values assigned to a specific version of a node. |
Example:
package com.openkm;
import java.util.HashMap;
import java.util.Map;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
Map<String, String> properties = new HashMap<>();
properties = ws.propertyGroup.getPropertiesByVersion("118cb06b-9df7-4d59-bed9-ba986a4f8e0b", "okg:technology", "1.3");
for (String key : properties.keySet()) {
System.out.println(key + " > " + properties.get(key));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
getGroupByVersionForm
Description:
Method | Return values | Description |
---|---|---|
getGroupByVersionForm(String uuid, String grpName, String versionName) |
List<FormElement> |
Retrieves a list of all metadata group elements definition for a specific version of a node. |
The grpName should be a valid Metadata group name. The method is usually used to display empty form elements for updating metadata values. |
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.bean.form.FormElement;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
for (FormElement fElement : ws.propertyGroup.getGroupByVersionForm("118cb06b-9df7-4d59-bed9-ba986a4f8e0b", "okg:consulting", "1.3")) {
System.out.println(fElement);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
getGroup
Description:
Method | Return values | Description |
---|---|---|
getGroup(String grpName) |
PropertyGroup |
Retrieves the metadata group |
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
System.out.println(ws.propertyGroup.getGroup("okg:consulting"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
getSuggestBoxKeyValue
Description:
Method | Return values | Description |
---|---|---|
getSuggestBoxKeyValue(String grpName, String propertyName, String key) |
String |
Returns the suggestBox value for a key. |
The propertyName parameter should be a Metadata Suggestbox field type. More information at Metadata Suggestbox field The sample below is based on this Metadata group definition:
|
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.impl.OKMWebservices;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
System.out.println(ws.propertyGroup.getPropertyGroup("okg:consulting"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
getSuggestBoxKeyValuesFiltered
Description:
Method | Return values | Description |
---|---|---|
getSuggestBoxKeyValuesFiltered(String grpName, String propertyName, String filter) |
Map<String, String> |
Retrieves a map - (key, value) pairs - with suggestBox values. |
The propertyName parameter should be a Metadata Suggestbox field type. More information at Metadata Suggestbox field The sample below is based on this Metadata group definition:
|
Example:
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.impl.OKMWebservices;
import java.util.Map;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
Map<String, String> values = ws.propertyGroup.getSuggestBoxKeyValuesFiltered(Config.GROUP_CONSULTING, "okp:consulting.suggestbox", "pai");
for (String key : values.keySet()) {
String value = values.get(key);
System.out.println(key + ":" + value);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
validateField
Method | Return values | Description |
---|---|---|
validateField(String value, String className, List<String> uuids) |
String |
Returns the validation message |
Example of the form validator implementation More information at Creating your own Form Validator plugin. In this example, two identical comments will not be allowed in the metadata field named okp:technology.comment.
|
Example
package com.openkm;
import com.openkm.sdk4j.OKMWebservicesFactory;
import com.openkm.sdk4j.impl.OKMWebservices;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
String host = "http://localhost:8080/openkm";
String user = "okmAdmin";
String password = "admin";
OKMWebservices ws = OKMWebservicesFactory.getInstance(host);
try {
ws.login(user, password);
List<String> uuids = new ArrayList<>();
uuids.add("26ece92f-9708-4d3f-8033-18dc98b9e7f5");
uuids.add("7984b622-7c5f-425a-9451-7611c0caf227");
String value = "test";
String className = "com.openkm.plugin.form.validator.DuplicateDocumentNumberValidator";
String message = ws.propertyGroup.validateField(value, className, uuids);
System.out.println("Validate: " + message);
} catch (Exception e) {
e.printStackTrace();
}
}
}