PropertyGroup samples

Basics

From an older OpenKM version we named "Metadata Groups" as "Property Groups".

Although we understand this name does not help a lot to identify these methods with metadata ones, for historical reason, we continue maintaining the nomenclature.

For more information about Metadata.

On almost methods, you'll see the parameter named "nodeId". The value of this parameter can be a valid document, folder, mail or record UUID .

Example of nodeId:

  • Using UUID -> "f123a950-0329-4d62-8328-0ff500fd42db"

The class com.openkm.sdk4j.util.ISO8601 should be used to set and parse metadata date fields. The metadata field of type date values are stored into application in ISO-8601 basic format.

To convert retrieved metadata field of type date to a valid date use:

DateTime date = ISO8601.parseBasic(metadataFieldValue);

To save date value into the metadata field of type date use:

DateTime date = DateTime.now; // Present date 
String metadataFieldValue = ISO8601.formatBasic(date);
// metadataFieldValue can be saved into repository metadata field of type date

Suggested code sample

First, you must create the webservice object:

OKMWebservices ws = OKMWebservicesFactory.newInstance(host);

Then should login using the method "login". You can access the "login" method from webservice object "ws" as is shown below:

ws.login(user, password);

Once you are logged with the webservices the session is keep in the webservice Object. Then you can use the other API methods.

At this point you can use all the Property Group methods from "propertyGroup" class as is shown below:

ws.propertyGroup.addPropertyGroup("8cd1e072-8595-4dd3-b121-41d622c43f08", "okg:consulting", propertiesMap);

Methods

addGroup

Description:

MethodReturn valuesDescription

addGroup(String nodeId, String grpName, Dictionary<String, String> propertiesMap)

void

Adds a metadata group to a node.

The grpName should be a valid Metadata group name.

It is not mandatory to set in the propertiesMap parameter all fields values, is enough with the fields you wish to change its values.

The sample below is based on this Metadata group definition:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 2.0//EN"
                                 "http://www.openkm.com/dtd/property-groups-2.0.dtd">
<property-groups>
  <property-group label="Consulting" name="okg:consulting">
    <input label="Name" type="text" name="okp:consulting.name"/>
    <input label="Date" type="date" name="okp:consulting.date" />
    <checkbox label="Important" name="okp:consulting.important"/>
    <textarea label="Comment" name="okp:consulting.comment"/>
  </property-group>
</property-groups

To add several values on a metadata field of type multiple and to add value on a metadata field of type simple like this:

<select label="Multiple" name="okp:consulting.multiple" type="multiple">
  <option label="One" value="one"/>
  <option label="Two" value="two"/>
  <option label="Three" value="three" />
</select>

<select label="Simple" name="okp:consulting.simple" type="simple">
<option label="One" value="one"/>
<option label="Two" value="two"/>
<option label="Three" value="three" />
</select>

You should do:

properties.Add("okp:consulting.multiple", "[one,two]");
properties.Add("okp:consulting.simple", "[one]");

Where "one" and "two" are valid values, the character "," is used as a separator and the options should go between "[" "]".

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.util; namespace OKMRest { public class Program { static void Main(string[] args) { String host = "http://localhost:8080/openkm"; String username = "okmAdmin"; String password = "admin"; OKMWebservice ws = OKMWebservicesFactory.newInstance(host);
             try {
ws.login(user, password);
Dictionary<string, string> props = new Dictionary<string, string>(); 
DateTime date = DateTime.Now;
props.Add("okp:consulting.name", "test");
props.Add("okp:consulting.date", ISO8601.formatBasic(date));
props.Add("okp:consulting.important", "true");
props.Add("okp:consulting.comment", "test"); ws.propertyGroup.addGroup("f0064cf3-4776-44c2-868a-f08697a6957e", "okg:consulting", props); } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

removeGroup

Description:

MethodReturn valuesDescription

removeGroup(String nodeId, String grpName)

void

Removes a metadata group of a node.

The grpName should be a valid Metadata group name.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host);  
             try {
ws.login(user, password); ws.propertyGroup.removeGroup("f123a950-0329-4d62-8328-0ff500fd42db", "okg:consulting"); } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getGroups

Description:

MethodReturn valuesDescription

getGroups(String nodeId)

List<PropertyGroup>

Retrieves a list of metadata groups assigned to a node.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password); foreach (PropertyGroup pGroup in ws.propertyGroup.getGroups("f123a950-0329-4d62-8328-0ff500fd42db")) { System.Console.WriteLine(pGroup.name); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getAllGroups

Description:

MethodReturn valuesDescription

getAllGroups()

List<PropertyGroup>

Retrieves a list of all metadata groups set into the application.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host);  
             try {
ws.login(user, password); foreach (PropertyGroup pGroup in ws.propertyGroup.getAllGroups()) { System.Console.WriteLine(pGroup.name); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getPropertyGroupForm

Description:

MethodReturn valuesDescription

getPropertyGroupForm(String grpName)

List<FormElement>

Retrieves a list of all metadata group elements definition.

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:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;
using com.openkm.sdk4csharp.bean.form;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password); foreach (FormElement fElement in ws.propertyGroup.getPropertyGroupForm("okg:consulting")) { System.Console.WriteLine(fElement); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

setPropertyGroupProperties

Description:

MethodReturn valuesDescription

setPropertyGroupProperties(String nodeId, String grpName, Dictionary<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 in the node ( see addGroup method ) otherwise will be raised and error.

Is not mandatory set into properties parameter all fields values, is enough with the fields you wish to change its values.

The sample below is based on this Metadata group definition:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//openkm//DTD Property Groups 2.0//EN"
                                 "http://www.openkm.com/dtd/property-groups-2.0.dtd">
<property-groups>
  <property-group label="Consulting" name="okg:consulting">
    <input label="Name" type="text" name="okp:consulting.name"/>
    <input label="Date" type="date" name="okp:consulting.date" />
    <checkbox label="Important" name="okp:consulting.important"/>
    <textarea label="Comment" name="okp:consulting.comment"/>
  </property-group>
</property-groups>

To add several values on a metadata field of type multiple and to add value on a metadata field of type simple like this:

<select label="Multiple" name="okp:consulting.multiple" type="multiple">
  <option label="One" value="one"/>
  <option label="Two" value="two"/>
  <option label="Three" value="three" />
</select>

<select label="Simple" name="okp:consulting.simple" type="simple">
<option label="One" value="one"/>
<option label="Two" value="two"/>
<option label="Three" value="three" />
</select>

You should do:

properties.Add("okp:consulting.multiple", "[one,two]");
properties.Add("okp:consulting.simple", "[one]");

Where "one" and "two" are valid values, the character "," is used as a separator and the options should go between "[" "]".

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;
using com.openkm.sdk4csharp.util;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8180/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host);
             try {
ws.login(user, password); Dictionary<String, String> properties = new Dictionary<String, String>(); properties.Add("okp:consulting.name", "new name");
                 //The date fields must be saved with basic ISO 8601 format properties.Add("okp:consulting.date", ISO8601.formatBasic(DateTime.Now)); ws.propertyGroup.setPropertyGroupPropertiesSimple("f123a950-0329-4d62-8328-0ff500fd42db","okg:consulting", properties); } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

hasGroup

Description:

MethodReturn valuesDescription

hasGroup(String nodeId, String grpName)

Boolean

Returns a boolean that indicates if the node has or not a metadata group.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host);
             try {
ws.login(user, password); System.Console.WriteLine("Have metadata group:"+ ws.propertyGroup.hasGroup("f123a950-0329-4d62-8328-0ff500fd42db","okg:consulting").ToString()); } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getRegisteredDefinition

Description:

MethodReturn valuesDescription

getRegisteredDefinition()

String

Return the XML Metada groups definition.

The method only can be executed by a superuser grants ( ROLE_ADMIN member user).

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host);
             try {
ws.login(user, password); System.Console.WriteLine(ws.propertyGroup.getRegisteredDefinition()); } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

registerDefinition

Description:

MethodReturn valuesDescription

registerDefinition(InputStream is,  String pgName)

void

Sets the XML Metadata groups definition into the repository..

The method can only be executed by superuser grants ( ROLE_ADMIN member user).

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using System.IO;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8180/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password); FileStream fs = new FileStream("E:\\PropertyGroups.xml",FileMode.Open); ws.propertyGroup.registerDefinition(fs,"okg:testing"); fs.Dispose(); } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getSuggestions

Description:

MethodReturn valuesDescription

getSuggestions(String nodeId, String grpName, String propName)

List<String>

Retrieves a list of a suggested metadata field values.

The propName parameter should be a Metadata Select field type.

The sample below is based on this Metadata group definition:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//openkm//DTD Property Groups 2.0//EN"
                                 "http://www.openkm.com/dtd/property-groups-2.0.dtd">
<property-groups>
  <property-group label="Technology" name="okg:technology">
    <select label="Type" name="okp:technology.type" type="multiple">
      <option label="Alfa" value="t1"/>
      <option label="Beta" value="t2" />
      <option label="Omega" value="t3" />
    </select>
    <select label="Language" name="okp:technology.language" type="simple">
      <option label="Java" value="java"/>
      <option label="Python" value="python"/>
      <option label="PHP" value="php" />
    </select>
    <input label="Comment" name="okp:technology.comment"/>
    <textarea label="Description" name="okp:technology.description"/>
    <input label="Link" type="link" name="okp:technology.link"/>
  </property-group>
</property-groups>

 

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host);  
             try {
ws.login(user, password); foreach(String value in ws.propertyGroup.getSuggestions("f123a950-0329-4d62-8328-0ff500fd42db","okg:technology", "okp:technology.language")) { System.Console.WriteLine(value); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getPropertyGroupProperties

Description:

MethodReturn valuesDescription

getPropertyGroupProperties(String nodeId, String grpName)

Dictionary<String, String>

Retrieves a dictionary- (key,value) pairs - with Metada group values of a node.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password); Dictionary<String, String> properties = new Dictionary<String, String>(); properties = ws.propertyGroup.getPropertyGroupProperties("f123a950-0329-4d62-8328-0ff500fd42db","okg:technology");
                 foreach (KeyValuePair<String, String> pair in properties) { System.Console.WriteLine(pair.Key + "-> " + pair.Value); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getPropertyGroupPropertiesByVersion

Description:

MethodReturn valuesDescription

getPropertyGroupPropertiesByVersion(String nodeId, String grpName,String versionName)

Dictionary<String, String>

Retrieves a dictionary- (key,value) pairs - with Metada group values of a node.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password); Dictionary<String, String> properties = new Dictionary<String, String>(); properties = ws.propertyGroup.getPropertyGroupPropertiesByVersion("f123a950-0329-4d62-8328-0ff500fd42db","okg:technology","1.1");
                 foreach (KeyValuePair<String, String> pair in properties) { System.Console.WriteLine(pair.Key + "-> " + pair.Value); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getGroupsByVersion

Description:

MethodReturn valuesDescription

getGroupsByVersion(String nodeId, String versionName)

List<PropertyGroup>

Retrieves a list of metadata groups assigned to a node.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password); foreach (PropertyGroup pGroup in ws.propertyGroup.getGroupsByVersion("f123a950-0329-4d62-8328-0ff500fd42db","1.1")) { System.Console.WriteLine(pGroup.name, "1.1"); } } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }

getGroup

Description:

MethodReturn valuesDescription

getGroup(String grpName)

PropertyGroup

Get property group definition.

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.openkm.sdk4csharp;
using com.openkm.sdk4csharp.bean;

namespace OKMRest
{
    public class Program
    {
        static void Main(string[] args)
        {
            String host = "http://localhost:8080/openkm";
            String username = "okmAdmin";
            String password = "admin";
            OKMWebservice ws = OKMWebservicesFactory.newInstance(host); 
             try {
ws.login(user, password); PropertyGroup pg =  ws.propertyGroup.getGroup("okg:consulting"); } catch (Exception e) { System.Console.WriteLine(e.ToString()); } } } }