Author: ito
Date: Wed Sep 15 09:04:35 2010
New Revision: 997235
URL: http://svn.apache.org/viewvc?rev=997235&view=rev
Log:
CLEREZZA-300: locks added and dct:description
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.customproperty/src/main/java/org/apache/clerezza/utils/customproperty/CustomProperty.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.customproperty/src/main/java/org/apache/clerezza/utils/customproperty/ontology/CUSTOMPROPERTY.java
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.customproperty/src/main/java/org/apache/clerezza/utils/customproperty/CustomProperty.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.customproperty/src/main/java/org/apache/clerezza/utils/customproperty/CustomProperty.java?rev=997235&r1=997234&r2=997235&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.customproperty/src/main/java/org/apache/clerezza/utils/customproperty/CustomProperty.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.customproperty/src/main/java/org/apache/clerezza/utils/customproperty/CustomProperty.java
Wed Sep 15 09:04:35 2010
@@ -21,6 +21,7 @@ package org.apache.clerezza.utils.custom
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
+import java.util.concurrent.locks.Lock;
import org.apache.clerezza.utils.customproperty.ontology.CUSTOMPROPERTY;
import org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider;
@@ -30,8 +31,10 @@ import org.apache.clerezza.rdf.core.MGra
import org.apache.clerezza.rdf.core.NonLiteral;
import org.apache.clerezza.rdf.core.Triple;
import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.LockableMGraph;
import org.apache.clerezza.rdf.core.impl.PlainLiteralImpl;
import org.apache.clerezza.rdf.core.impl.TripleImpl;
+import org.apache.clerezza.rdf.ontologies.DCTERMS;
import org.apache.clerezza.rdf.ontologies.RDF;
/**
@@ -65,21 +68,48 @@ public class CustomProperty {
public boolean addSingleCustomField(UriRef dependency,
String dependencyValue, String label, UriRef property, int
length,
int cardinality) {
- MGraph contentGraph = cgProvider.getContentGraph();
-
+ return addSingleCustomField(dependency,
dependencyValue, label, null,
+ null, property, length, cardinality);
+ }
+
+ /**
+ * Adding a single customfield to customize any item of a dependency
+ *
+ * @param dependency type UriRef defining the dependency
item of the customfield
+ * @param dependencyValue String to specify the property within
the dependency type
+ * @param label label of the customfield
+ * @param description the description about the usage of this
custom field
+ * @param config configuration parameter for
this customfield
+ * @param property UriRef defining the meaning of
the customfield
+ * @param length
+ * @param cardinality
+ *
+ * @return true if field could be added
+ */
+ public boolean addSingleCustomField(UriRef dependency,
+ String dependencyValue, String label, String description,
String config,
+ UriRef property, int length, int cardinality) {
+ LockableMGraph contentGraph = cgProvider.getContentGraph();
+
NonLiteral customfield = addBasicCustomField(contentGraph,
- property, cardinality, label,
getCustomPropertyCollection(
+ property, cardinality, label, description, config,
getCustomPropertyCollection(
dependency, dependencyValue));
-
- if(customfield != null){
- contentGraph.add(new TripleImpl( customfield ,
CUSTOMPROPERTY.length,
-
LiteralFactory.getInstance().createTypedLiteral(length)));
- return true;
- } else {
- return false;
+ Lock lock = contentGraph.getLock().writeLock();
+ lock.lock();
+ try {
+ if(customfield != null){
+ contentGraph.add(new TripleImpl( customfield ,
CUSTOMPROPERTY.length,
+
LiteralFactory.getInstance().createTypedLiteral(length)));
+ return true;
+ } else {
+ return false;
+ }
+ } finally {
+ lock.unlock();
}
}
+
/**
* Adding a customfield to select one or more values within some
predefined ones
*
@@ -96,50 +126,97 @@ public class CustomProperty {
public boolean addMultipleCustomField(UriRef dependency,
String dependencyValue, String label, UriRef property,
String multiselect, String selectableValues, int
cardinality) {
- MGraph contentGraph = cgProvider.getContentGraph();
-
+
+ return addMultipleCustomField(dependency, dependencyValue,
label, null, null, property,
+ multiselect, selectableValues, cardinality);
+ }
+
+ /**
+ * Adding a customfield to select one or more values within some
predefined ones
+ *
+ * @param dependency type UriRef defining the dependency
item of the customfield
+ * @param dependencyValue String to specify the property within
the dependency type
+ * @param label label of the customfield
+ * @param description the description about the usage of this
custom field
+ * @param config configuration parameter for
this customfield
+ * @param property UriRef defining the meaning of
the customfield
+ * @param multiselect defines if one or more values can be
selected
+ * @param selectableValues the values as a string seperated with a
","
+ * @param cardinality
+ *
+ * @return true if field could be added
+ */
+ public boolean addMultipleCustomField(UriRef dependency,
+ String dependencyValue, String label, String
description, String config, UriRef property,
+ String multiselect, String selectableValues, int
cardinality) {
+ LockableMGraph contentGraph = cgProvider.getContentGraph();
+
NonLiteral customfield = addBasicCustomField(contentGraph,
property,
- cardinality, label,
getCustomPropertyCollection(dependency,
+ cardinality, label, description, config,
getCustomPropertyCollection(dependency,
dependencyValue));
- if(customfield != null){
- Collection<Triple> tripleArray = new
ArrayList<Triple>();
- String[] values = selectableValues.split(",");
- for (int i = 0; i < values.length; i++) {
- tripleArray
- .add(new
TripleImpl(customfield, CUSTOMPROPERTY.value,
-
LiteralFactory.getInstance().createTypedLiteral(
-
values[i])));
+ Lock lock = contentGraph.getLock().writeLock();
+ lock.lock();
+ try {
+ if(customfield != null){
+ Collection<Triple> tripleArray = new
ArrayList<Triple>();
+ String[] values = selectableValues.split(",");
+ for (int i = 0; i < values.length; i++) {
+ tripleArray
+ .add(new
TripleImpl(customfield, CUSTOMPROPERTY.value,
+
LiteralFactory.getInstance().createTypedLiteral(
+
values[i])));
+ }
+ tripleArray.add(new TripleImpl(customfield,
+ CUSTOMPROPERTY.multiselectable,
LiteralFactory.getInstance()
+
.createTypedLiteral(multiselect)));
+ contentGraph.addAll(tripleArray);
+ return true;
+ } else {
+ return false;
}
- tripleArray.add(new TripleImpl(customfield,
- CUSTOMPROPERTY.multiselectable,
LiteralFactory.getInstance()
-
.createTypedLiteral(multiselect)));
- contentGraph.addAll(tripleArray);
- return true;
- } else {
- return false;
+ } finally {
+ lock.unlock();
}
}
- protected NonLiteral addBasicCustomField(MGraph contentGraph,
- UriRef property, int cardinality, String label,
- NonLiteral propertyCollection) {
- Collection<Triple> tripleArray = new ArrayList<Triple>();
- NonLiteral customField = new BNode();
- contentGraph.add(new TripleImpl(customField,
- CUSTOMPROPERTY.property, property));
- tripleArray.add(new TripleImpl(propertyCollection,
- CUSTOMPROPERTY.customfield, customField));
- tripleArray.add(new TripleImpl(customField, RDF.type,
- CUSTOMPROPERTY.CustomField));
- tripleArray.add(new TripleImpl(customField,
CUSTOMPROPERTY.cardinality,
-
LiteralFactory.getInstance().createTypedLiteral(cardinality)));
- tripleArray.add(new TripleImpl(customField,
- CUSTOMPROPERTY.presentationlabel, new
PlainLiteralImpl(label)));
- if(contentGraph.addAll(tripleArray)){
- return customField;
- } else {
- return null;
+ protected NonLiteral addBasicCustomField(LockableMGraph contentGraph,
+ UriRef property, int cardinality, String label, String
description,
+ String config, NonLiteral propertyCollection) {
+ Lock lock = contentGraph.getLock().writeLock();
+ lock.lock();
+ try {
+ if(contentGraph.filter(null, CUSTOMPROPERTY.property,
property).hasNext()) {
+ return null;
+ }
+ Collection<Triple> tripleArray = new
ArrayList<Triple>();
+ NonLiteral customField = new BNode();
+ contentGraph.add(new TripleImpl(customField,
+ CUSTOMPROPERTY.property, property));
+ tripleArray.add(new TripleImpl(propertyCollection,
+ CUSTOMPROPERTY.customfield,
customField));
+ tripleArray.add(new TripleImpl(customField, RDF.type,
+ CUSTOMPROPERTY.CustomField));
+ tripleArray.add(new TripleImpl(customField,
CUSTOMPROPERTY.cardinality,
+
LiteralFactory.getInstance().createTypedLiteral(cardinality)));
+ tripleArray.add(new TripleImpl(customField,
+ CUSTOMPROPERTY.presentationlabel, new
PlainLiteralImpl(label)));
+ if(description != null && !description.isEmpty()) {
+ tripleArray.add(new TripleImpl(customField,
+ DCTERMS.description, new
PlainLiteralImpl(description)));
+ }
+ if(config != null && !config.isEmpty()) {
+ tripleArray.add(new TripleImpl(customField,
+ CUSTOMPROPERTY.configuration, new
PlainLiteralImpl(config)));
+ }
+ if(contentGraph.addAll(tripleArray)){
+ return customField;
+ } else {
+ return null;
+ }
+ } finally {
+ lock.unlock();
}
+
}
@@ -153,35 +230,47 @@ public class CustomProperty {
*/
public NonLiteral getCustomPropertyCollection(UriRef dependency,
String dependencyValue) {
- MGraph contentGraph = cgProvider.getContentGraph();
- Iterator<Triple> collections = contentGraph.filter(null,
RDF.type,
- CUSTOMPROPERTY.CustomFieldCollection);
- while (collections.hasNext()) {
- Iterator<Triple> collections2 = contentGraph
- .filter(collections.next().getSubject(),
-
CUSTOMPROPERTY.dependency, dependency);
- while (collections2.hasNext()) {
- Iterator<Triple> collections3 =
contentGraph.filter(
-
collections2.next().getSubject(),
- CUSTOMPROPERTY.dependencyvalue,
LiteralFactory
-
.getInstance().createTypedLiteral(
-
dependencyValue));
- if (collections3.hasNext()) {
- return collections3.next().getSubject();
+ LockableMGraph contentGraph = cgProvider.getContentGraph();
+ Lock lock = contentGraph.getLock().readLock();
+ lock.lock();
+ try {
+ Iterator<Triple> collections =
contentGraph.filter(null, RDF.type,
+ CUSTOMPROPERTY.CustomFieldCollection);
+ while (collections.hasNext()) {
+ Iterator<Triple> collections2 = contentGraph
+
.filter(collections.next().getSubject(),
+
CUSTOMPROPERTY.dependency, dependency);
+ while (collections2.hasNext()) {
+ Iterator<Triple> collections3 =
contentGraph.filter(
+
collections2.next().getSubject(),
+
CUSTOMPROPERTY.dependencyvalue, LiteralFactory
+
.getInstance().createTypedLiteral(
+
dependencyValue));
+ if (collections3.hasNext()) {
+ return
collections3.next().getSubject();
+ }
}
}
+ } finally {
+ lock.unlock();
+ }
+ lock = contentGraph.getLock().writeLock();
+ lock.lock();
+ try {
+ Collection<Triple> tripleArray = new
ArrayList<Triple>();
+ NonLiteral cfc = new BNode();
+ tripleArray.add(new TripleImpl(cfc, RDF.type,
+ CUSTOMPROPERTY.CustomFieldCollection));
+ tripleArray.add(new TripleImpl(cfc,
CUSTOMPROPERTY.dependency,
+ dependency));
+ tripleArray.add(new TripleImpl(cfc,
CUSTOMPROPERTY.dependencyvalue,
+ LiteralFactory.getInstance()
+
.createTypedLiteral(dependencyValue)));
+ contentGraph.addAll(tripleArray);
+ return getCustomPropertyCollection(dependency,
dependencyValue);
+ } finally {
+ lock.unlock();
}
- Collection<Triple> tripleArray = new ArrayList<Triple>();
- NonLiteral cfc = new BNode();
- tripleArray.add(new TripleImpl(cfc, RDF.type,
- CUSTOMPROPERTY.CustomFieldCollection));
- tripleArray.add(new TripleImpl(cfc, CUSTOMPROPERTY.dependency,
- dependency));
- tripleArray.add(new TripleImpl(cfc,
CUSTOMPROPERTY.dependencyvalue,
- LiteralFactory.getInstance()
-
.createTypedLiteral(dependencyValue)));
- contentGraph.addAll(tripleArray);
- return getCustomPropertyCollection(dependency, dependencyValue);
}
/**
@@ -190,12 +279,18 @@ public class CustomProperty {
*/
public ArrayList<NonLiteral>getCustomfieldsOfCollection(NonLiteral
collection){
ArrayList<NonLiteral> customfields = new
ArrayList<NonLiteral>();
- MGraph contentGraph = cgProvider.getContentGraph();
- Iterator <Triple> result= contentGraph.filter(collection,
CUSTOMPROPERTY.customfield, null);
- while(result.hasNext()){
- customfields.add((NonLiteral)
result.next().getObject());
+ LockableMGraph contentGraph = cgProvider.getContentGraph();
+ Lock lock = contentGraph.getLock().readLock();
+ lock.lock();
+ try {
+ Iterator <Triple> result=
contentGraph.filter(collection, CUSTOMPROPERTY.customfield, null);
+ while(result.hasNext()){
+ customfields.add((NonLiteral)
result.next().getObject());
+ }
+ return customfields;
+ } finally {
+ lock.unlock();
}
- return customfields;
}
/**
@@ -204,15 +299,22 @@ public class CustomProperty {
*/
public ArrayList<UriRef>getPropertiesOfCollection(NonLiteral
collection){
ArrayList<UriRef> customproperties = new ArrayList<UriRef>();
- MGraph contentGraph = cgProvider.getContentGraph();
- Iterator <Triple> result= contentGraph.filter(collection,
CUSTOMPROPERTY.customfield, null);
- while(result.hasNext()){
- Iterator <Triple> property=
contentGraph.filter((NonLiteral)result.next().getObject(),
CUSTOMPROPERTY.property, null);
- if(property.hasNext()){
-
customproperties.add((UriRef)property.next().getObject());
+ LockableMGraph contentGraph = cgProvider.getContentGraph();
+ Lock lock = contentGraph.getLock().readLock();
+ lock.lock();
+ try {
+ Iterator <Triple> result=
contentGraph.filter(collection, CUSTOMPROPERTY.customfield, null);
+ while(result.hasNext()){
+ Iterator <Triple> property= contentGraph.filter(
+
(NonLiteral)result.next().getObject(), CUSTOMPROPERTY.property, null);
+ if(property.hasNext()){
+
customproperties.add((UriRef)property.next().getObject());
+ }
}
+ return customproperties;
+ } finally {
+ lock.unlock();
}
- return customproperties;
}
@@ -227,32 +329,40 @@ public class CustomProperty {
*/
public boolean deleteCustomField(UriRef dependency, String
dependencyValue,
UriRef property) {
- MGraph contentGraph = cgProvider.getContentGraph();
+ LockableMGraph contentGraph = cgProvider.getContentGraph();
Collection<Triple> allCustomFieldTriples = new
ArrayList<Triple>();
Iterator<Triple> customfields = contentGraph.filter(
getCustomPropertyCollection(dependency,
dependencyValue),
CUSTOMPROPERTY.customfield, null);
- while (customfields.hasNext()) {
- Iterator<Triple> customfields2 = contentGraph.filter(
- (NonLiteral)
customfields.next().getObject(),
- CUSTOMPROPERTY.property, property);
- if (customfields2.hasNext()) {
- NonLiteral customField =
customfields2.next().getSubject();
- Iterator<Triple> someCustomfieldTriples =
contentGraph.filter(
- customField, null, null);
- while (someCustomfieldTriples.hasNext()) {
-
allCustomFieldTriples.add(someCustomfieldTriples.next());
- }
- Iterator<Triple> otherCustomFieldTriples =
contentGraph.filter(
- null, null, customField);
- while (otherCustomFieldTriples.hasNext()) {
-
allCustomFieldTriples.add(otherCustomFieldTriples.next());
+ boolean customFieldDelete = false;
+ Lock lock = contentGraph.getLock().writeLock();
+ lock.lock();
+ try {
+ while (customfields.hasNext()) {
+ Iterator<Triple> customfields2 =
contentGraph.filter(
+ (NonLiteral)
customfields.next().getObject(),
+ CUSTOMPROPERTY.property,
property);
+ if (customfields2.hasNext()) {
+ NonLiteral customField =
customfields2.next().getSubject();
+ Iterator<Triple> someCustomfieldTriples
= contentGraph.filter(
+ customField, null,
null);
+ while
(someCustomfieldTriples.hasNext()) {
+
allCustomFieldTriples.add(someCustomfieldTriples.next());
+ }
+ Iterator<Triple>
otherCustomFieldTriples = contentGraph.filter(
+ null, null,
customField);
+ while
(otherCustomFieldTriples.hasNext()) {
+
allCustomFieldTriples.add(otherCustomFieldTriples.next());
+ }
+ customFieldDelete = true;
}
- contentGraph.removeAll(allCustomFieldTriples);
- return true;
}
- }
- return false;
+ contentGraph.removeAll(allCustomFieldTriples);
+ } finally {
+ lock.unlock();
+ }
+ return customFieldDelete;
+
}
/**
@@ -262,7 +372,8 @@ public class CustomProperty {
*/
public UriRef getCustomFieldProperty(NonLiteral customfield){
MGraph contentGraph = cgProvider.getContentGraph();
- return (UriRef)contentGraph.filter(customfield,
CUSTOMPROPERTY.property, null).next().getObject();
+ return (UriRef)contentGraph.filter(customfield,
CUSTOMPROPERTY.property,
+ null).next().getObject();
}
protected void bindCgProvider(ContentGraphProvider cgProvider) {
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.customproperty/src/main/java/org/apache/clerezza/utils/customproperty/ontology/CUSTOMPROPERTY.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.customproperty/src/main/java/org/apache/clerezza/utils/customproperty/ontology/CUSTOMPROPERTY.java?rev=997235&r1=997234&r2=997235&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.customproperty/src/main/java/org/apache/clerezza/utils/customproperty/ontology/CUSTOMPROPERTY.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.customproperty/src/main/java/org/apache/clerezza/utils/customproperty/ontology/CUSTOMPROPERTY.java
Wed Sep 15 09:04:35 2010
@@ -42,6 +42,8 @@ public class CUSTOMPROPERTY {
public static final UriRef presentationlabel = new UriRef(
"http://clerezza.org/2009/06/custompropery#presentationlabel");
+ public static final UriRef configuration = new UriRef(
+
"http://clerezza.org/2009/06/custompropery#configuration");
public static final UriRef property = new UriRef(
"http://clerezza.org/2009/06/custompropery#property");
public static final UriRef cardinality = new UriRef(