diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 1314f66..666f8ff 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -7,7 +7,7 @@
uses
-
+
uses
diff --git a/src/main/java/org/gcube/data/access/storagehub/StorageHub.java b/src/main/java/org/gcube/data/access/storagehub/StorageHub.java
index da500a3..53ba0be 100644
--- a/src/main/java/org/gcube/data/access/storagehub/StorageHub.java
+++ b/src/main/java/org/gcube/data/access/storagehub/StorageHub.java
@@ -32,6 +32,7 @@ public class StorageHub extends Application {
classes.add(UserManager.class);
classes.add(GroupManager.class);
classes.add(SerializableErrorEntityTextWriter.class);
+ classes.add(MyApplicationListener.class);
return classes;
}
diff --git a/src/main/java/org/gcube/data/access/storagehub/Utils.java b/src/main/java/org/gcube/data/access/storagehub/Utils.java
index b4d3b28..ed7448a 100644
--- a/src/main/java/org/gcube/data/access/storagehub/Utils.java
+++ b/src/main/java/org/gcube/data/access/storagehub/Utils.java
@@ -26,6 +26,7 @@ import javax.jcr.query.Query;
import javax.jcr.version.Version;
import org.apache.commons.io.FilenameUtils;
+import org.apache.jackrabbit.util.ISO9075;
import org.apache.jackrabbit.util.Text;
import org.gcube.common.authorization.library.provider.AuthorizationProvider;
import org.gcube.common.scope.api.ScopeProvider;
@@ -109,15 +110,30 @@ public class Utils {
}
+ public static List serachByNameOnFolder(Session ses, Node parent, List excludes, Range range, boolean showHidden, Class extends Item> nodeTypeToInclude, String nameParam) throws RepositoryException, BackendGenericError{
+ String xpath = String.format("/jcr:root%s//element(*,nthl:workspaceItem)[jcr:like(@jcr:title, '%s')]",ISO9075.encodePath(parent.getPath()), nameParam);
+
+ //String query = String.format("SELECT * FROM [nthl:workspaceLeafItem] AS node WHERE ISDESCENDANTNODE('%s') ORDER BY node.[jcr:lastModified] DESC ",vreFolder.getPath());
+ logger.trace("query for search is {}",xpath);
+
+ Query jcrQuery = ses.getWorkspace().getQueryManager().createQuery(xpath, Query.XPATH);
+
+ NodeIterator it = jcrQuery.execute().getNodes();
+ return getItemListFromNodeIterator(it, excludes, range, showHidden, nodeTypeToInclude);
+ }
+
public static List getItemList(Node parent, List excludes, Range range, boolean showHidden, Class extends Item> nodeTypeToInclude) throws RepositoryException, BackendGenericError{
-
- logger.debug("getting children of node {}", parent.getIdentifier());
-
- List returnList = new ArrayList();
+ logger.trace("getting children of node {}", parent.getIdentifier());
long start = System.currentTimeMillis();
NodeIterator iterator = parent.getNodes();
logger.trace("time to get iterator {}",(System.currentTimeMillis()-start));
+ return getItemListFromNodeIterator(iterator, excludes, range, showHidden, nodeTypeToInclude);
+ }
+
+ private static List getItemListFromNodeIterator(NodeIterator iterator, List excludes, Range range, boolean showHidden, Class extends Item> nodeTypeToInclude) throws RepositoryException, BackendGenericError{
+ List returnList = new ArrayList();
+
logger.trace("nodeType is {}",nodeTypeToInclude);
int count =0;
logger.trace("selected range is {}", range);
@@ -125,12 +141,12 @@ public class Utils {
while (iterator.hasNext()){
Node current = iterator.nextNode();
- logger.debug("current node "+current.getName());
+ logger.trace("current node "+current.getName());
if (isToExclude(current, showHidden))
continue;
- logger.debug("current node not excluded "+current.getName());
+ logger.trace("current node not excluded "+current.getName());
if (range==null || (count>=range.getStart() && returnList.size() tempQueue = new LinkedList- ();
- logger.debug("adding directory {}",currentNode.getPath());
+ logger.trace("adding directory {}",currentNode.getPath());
for (Item item : Utils.getItemList(currentNode,Excludes.GET_ONLY_CONTENT, null, false, null)){
if (excludes.contains(item.getId())) continue;
if (item instanceof FolderItem)
tempQueue.addAll(getAllNodesForZip((FolderItem) item, session, accountingHandler, excludes));
else if (item instanceof AbstractFileItem){
- logger.debug("adding file {}",item.getPath());
+ logger.trace("adding file {}",item.getPath());
AbstractFileItem fileItem = (AbstractFileItem) item;
accountingHandler.createReadObj(fileItem.getTitle(), session, session.getNodeByIdentifier(item.getId()), false);
queue.addLast(item);
@@ -190,9 +206,9 @@ public class Utils {
Item item = queue.pop();
if (item instanceof FolderItem) {
actualPath = Paths.getPath(item.getPath());
- logger.debug("actualPath is {}",actualPath.toPath());
+ logger.trace("actualPath is {}",actualPath.toPath());
String name = Paths.remove(actualPath, originalPath).toPath().replaceFirst("/", "");
- logger.debug("writing dir {}",name);
+ logger.trace("writing dir {}",name);
if (name.isEmpty()) continue;
try {
zos.putNextEntry(new ZipEntry(name));
@@ -208,7 +224,7 @@ public class Utils {
}
try(BufferedInputStream is = new BufferedInputStream(streamToWrite)){
String name = (Paths.remove(actualPath, originalPath).toPath()+item.getName()).replaceFirst("/", "");
- logger.debug("writing file {}",name);
+ logger.trace("writing file {}",name);
zos.putNextEntry(new ZipEntry(name));
copyStream(is, zos);
}catch (Exception e) {
@@ -285,7 +301,7 @@ public class Utils {
String nameTocheck = ext.isEmpty()? String.format("%s(*)",filename): String.format("%s(*).%s",filename, ext);
- logger.debug("filename is {}, extension is {} , and name to check is {}", filename, ext, nameTocheck);
+ logger.trace("filename is {}, extension is {} , and name to check is {}", filename, ext, nameTocheck);
NodeIterator ni = destination.getNodes(nameTocheck);
int maxval = 0;
diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/Item2NodeConverter.java b/src/main/java/org/gcube/data/access/storagehub/handlers/Item2NodeConverter.java
index 1b72bd0..68e4e09 100644
--- a/src/main/java/org/gcube/data/access/storagehub/handlers/Item2NodeConverter.java
+++ b/src/main/java/org/gcube/data/access/storagehub/handlers/Item2NodeConverter.java
@@ -56,7 +56,7 @@ public class Item2NodeConverter {
field.setAccessible(true);
try{
//Class> returnType = field.getType();
- logger.debug("creating node - added field {}",field.getName());
+ logger.trace("creating node - added field {}",field.getName());
Values values = getObjectValue(field.getType(), field.get(item));
if (values.isMulti()) newNode.setProperty(attribute.value(), values.getValues());
else newNode.setProperty(attribute.value(), values.getValue());
@@ -67,7 +67,7 @@ public class Item2NodeConverter {
NodeAttribute nodeAttribute = field.getAnnotation(NodeAttribute.class);
if (nodeAttribute.isReadOnly()) continue;
String nodeName = nodeAttribute.value();
- logger.debug("retrieving field node "+field.getName());
+ logger.trace("retrieving field node "+field.getName());
field.setAccessible(true);
try{
Object obj = field.get(item);
@@ -129,7 +129,7 @@ public class Item2NodeConverter {
}
} else if (field.isAnnotationPresent(ListNodes.class)){
- logger.debug("found field {} of type annotated as ListNodes in class {} on node {}", field.getName(), object.getClass().getName(), newNode.getName());
+ logger.trace("found field {} of type annotated as ListNodes in class {} on node {}", field.getName(), object.getClass().getName(), newNode.getName());
field.setAccessible(true);
List