diff --git a/geoportal-common/pom.xml b/geoportal-common/pom.xml index f940491..517a98d 100644 --- a/geoportal-common/pom.xml +++ b/geoportal-common/pom.xml @@ -58,38 +58,11 @@ junit junit - 4.12 test - - - org.glassfish.jersey.media - jersey-media-json-jackson - - - - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - 2.8.8 - - - - - org.gcube.contentmanagement - storage-manager-core - [2.0.0, 3.0.0-SNAPSHOT) - - - org.gcube.contentmanagement - storage-manager-wrapper - [2.0.0, 3.0.0-SNAPSHOT) - - - ch.qos.logback logback-classic diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/utils/Files.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/utils/Files.java index b730201..a30245c 100644 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/utils/Files.java +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/utils/Files.java @@ -38,11 +38,15 @@ public class Files { } public static String fixFilename(String toFix) { + String extension=""; if(toFix.contains(".")) { - String prefix=toFix.substring(toFix.lastIndexOf(".")); - toFix=toFix.substring(0,toFix.lastIndexOf(".")); - return toFix.toLowerCase().replaceAll("[\\*\\+\\/\\\\ \\[\\]\\(\\)\\.\\\"\\:\\;\\|]","_")+prefix; + //preserve extension + int index=toFix.indexOf("."); + extension=toFix.substring(index); + //only escape before extension + toFix=toFix.substring(0,toFix.indexOf(".")); } - return toFix.toLowerCase().replaceAll("[\\*\\+\\/\\\\ \\[\\]\\(\\)\\.\\\"\\:\\;\\|]","_"); + return toFix.toLowerCase(). + replaceAll("[\\*\\+\\/\\\\ \\[\\]\\(\\)\\.\\\"\\:\\;\\|]","_")+extension; } } diff --git a/geoportal-common/src/test/java/org/gcube/application/geoportal/common/FilesTests.java b/geoportal-common/src/test/java/org/gcube/application/geoportal/common/FilesTests.java new file mode 100644 index 0000000..d53bc9b --- /dev/null +++ b/geoportal-common/src/test/java/org/gcube/application/geoportal/common/FilesTests.java @@ -0,0 +1,26 @@ +package org.gcube.application.geoportal.common; + +import lombok.extern.slf4j.Slf4j; +import org.gcube.application.geoportal.common.utils.Files; +import org.junit.Test; + +import java.io.File; + +import static org.junit.Assert.assertTrue; + +@Slf4j +public class FilesTests { + + @Test + public void testNames(){ + for(String name : new File("../test-data/concessioni").list()){ + if(name.contains(".")) { + String originalExtension = name.substring(name.indexOf(".")); + String obtained = Files.fixFilename(name); + log.info(name + "->" + obtained + "[" + originalExtension + "]"); + assertTrue(obtained.endsWith(originalExtension)); + } + } + } + +} diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/SDIManager.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/SDIManager.java index d1099f7..5546580 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/SDIManager.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/SDIManager.java @@ -116,7 +116,11 @@ public class SDIManager { FileContainer fc=wsManager.getFileById(wc.getStorageID()); String completeFilename=Files.fixFilename(fc.get().getName()); - String filename=completeFilename.contains(".")?completeFilename.substring(0, completeFilename.lastIndexOf(".")):completeFilename; + + + String filename= + completeFilename.contains(".")? + completeFilename.substring(0, completeFilename.indexOf(".")):completeFilename; Destination destination=new Destination(completeFilename); diff --git a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ConcessioniOverMongoTest.java b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ConcessioniOverMongoTest.java index 83fb52d..14e5020 100644 --- a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ConcessioniOverMongoTest.java +++ b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ConcessioniOverMongoTest.java @@ -175,13 +175,14 @@ public class ConcessioniOverMongoTest extends BasicServiceTestUnit{ } -// @Test -// public void handlePrecise() throws Exception { -// WebTarget target=target(PATH); -// String id="610415af02ad3d05b5f81ee3"; -// publish(target,unpublish(target,id)); -// target.path(id).queryParam(InterfaceConstants.Parameters.FORCE,true).request(MediaType.APPLICATION_JSON).delete(); -// } + @Test + public void handlePrecise() throws Exception { + //Republishing + WebTarget target=target(PATH); + String id="610415af02ad3d05b5f81ee3"; + publish(target,unpublish(target,id)); + target.path(id).queryParam(InterfaceConstants.Parameters.FORCE,true).request(MediaType.APPLICATION_JSON).delete(); + } @@ -275,8 +276,9 @@ public class ConcessioniOverMongoTest extends BasicServiceTestUnit{ assertEquals(published.getImmaginiRappresentative().size(),2); assertEquals(published.getPianteFineScavo().size(),1); assertNotNull(published.getPosizionamentoScavo().getWmsLink()); - for(LayerConcessione l : published.getPianteFineScavo()) + for(LayerConcessione l : published.getPianteFineScavo()) { assertNotNull(l.getWmsLink()); + } assertNotNull(published.getCentroidLat()); assertNotNull(published.getCentroidLong()); } @@ -295,10 +297,13 @@ public class ConcessioniOverMongoTest extends BasicServiceTestUnit{ upload(storage,target,c.getMongo_id(),Paths.RELAZIONE,"relazione.pdf"); upload(storage,target,c.getMongo_id(),Paths.ABSTRACT_RELAZIONE,"relazione.pdf"); - upload(storage,target,c.getMongo_id(),Paths.POSIZIONAMENTO,"pos.shp","pos.shx"); + upload(storage,target,c.getMongo_id(),Paths.POSIZIONAMENTO, + TestModel.getBaseFolder().list((file,name)->{return name.startsWith("pos");})); // Clash on workspaces - upload(storage,target,c.getMongo_id(),Paths.piantaByIndex(0),"pianta.shp","pianta.shx"); + upload(storage,target,c.getMongo_id(),Paths.piantaByIndex(0), + TestModel.getBaseFolder().list((file,name)->{return name.startsWith("pianta");})); + upload(storage,target,c.getMongo_id(),Paths.imgByIndex(0),"immagine.png"); upload(storage,target,c.getMongo_id(),Paths.imgByIndex(1),"immagine2.png"); diff --git a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/SDITests.java b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/SDITests.java index e2f45b0..c0f81cf 100644 --- a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/SDITests.java +++ b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/SDITests.java @@ -39,4 +39,10 @@ public class SDITests { Assert.assertTrue(dbMatcher.find()); System.out.println("DB :\t"+dbMatcher.group()); } + + + @Test + public void registerFileSet(){ + + } } diff --git a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ws/DescribeWSFolder.java b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ws/DescribeWSFolder.java index 9b88c51..351836f 100644 --- a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ws/DescribeWSFolder.java +++ b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ws/DescribeWSFolder.java @@ -1,31 +1,46 @@ package org.gcube.application.geoportal.service.ws; import org.gcube.application.geoportal.service.TokenSetter; +import org.gcube.common.storagehub.client.dsl.FolderContainer; import org.gcube.common.storagehub.client.dsl.StorageHubClient; import org.gcube.common.storagehub.model.exceptions.StorageHubException; import org.gcube.common.storagehub.model.items.*; public class DescribeWSFolder { + + static StorageHubClient shc =null; + public static void main(String[] args) throws StorageHubException { String context="/gcube/devsec/devVRE"; - String folderID="fea4a885-7e60-4294-83d0-82162e7462f4"; - + String folderID="28774602-6423-4870-9afb-f8f4b585b438"; + Boolean recursive = true; TokenSetter.set(context); - StorageHubClient shc = new StorageHubClient(); - FolderItem folder=shc.open(folderID).asFolder().get(); + shc= new StorageHubClient(); + FolderContainer folder=shc.open(folderID).asFolder(); - System.out.println("PATH : "+folder.getPath()); - System.out.println("HIDDEN : "+folder.isHidden()); - System.out.println("Description : "+folder.getDescription()); + FolderItem item=folder.get(); + System.out.print("PATH : "+item.getPath()+"\tHIDDEN : "+item.isHidden()+"\tDescription : "+item.getDescription()); System.out.println("Listing... "); - for (Item item : shc.open(folderID).asFolder().list().getItems()) { - System.out.println("name:" + item.getName() + " is a File?: " + (item instanceof AbstractFileItem)); - System.out.println("name:" + item.getName() + " is a folder?: " + (item instanceof FolderItem)); - System.out.println("name:" + item.getName() + " is a shared folder?: " + (item instanceof SharedFolder)); - System.out.println("name:" + item.getName() + " is a VRE folder?: " + (item instanceof VreFolder)); + print(folder,""); +// for (Item i : folder.list().includeHidden().getItems()) { +// System.out.println("name:" + i.getName() + " type " + i.getPrimaryType()); +// +//// System.out.println("name:" + i.getName() + " is a File?: " + (i instanceof AbstractFileItem)); +//// System.out.println("name:" + i.getName() + " is a folder?: " + (i instanceof FolderItem)); +//// System.out.println("name:" + i.getName() + " is a shared folder?: " + (i instanceof SharedFolder)); +//// System.out.println("name:" + i.getName() + " is a VRE folder?: " + (i instanceof VreFolder)); +// } + } + + private static final void print(FolderContainer folder,String pad) throws StorageHubException { + for (Item i : folder.list().includeHidden().getItems()) { + System.out.println(pad+"name:" + i.getName() + " type " + i.getPrimaryType()); + if(i instanceof FolderItem){ + print(shc.open(i.getId()).asFolder(),pad+"\t"); + } } } } diff --git a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ws/DisplayWorkspaceTree.java b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ws/DisplayWorkspaceTree.java index b5f56b0..8ffc364 100644 --- a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ws/DisplayWorkspaceTree.java +++ b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ws/DisplayWorkspaceTree.java @@ -5,7 +5,10 @@ public class DisplayWorkspaceTree { public static void main(String[] args) { String context="/gcube/devsec/devVRE"; - String folderId=null; // NB null == + String folderId=null; + + + // NB null == } diff --git a/test-data/concessioni/pianta.cpg b/test-data/concessioni/pianta.cpg new file mode 100644 index 0000000..3ad133c --- /dev/null +++ b/test-data/concessioni/pianta.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/test-data/concessioni/pianta.dbf b/test-data/concessioni/pianta.dbf new file mode 100644 index 0000000..821a4a1 Binary files /dev/null and b/test-data/concessioni/pianta.dbf differ diff --git a/test-data/concessioni/pianta.prj b/test-data/concessioni/pianta.prj new file mode 100644 index 0000000..f45cbad --- /dev/null +++ b/test-data/concessioni/pianta.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/test-data/concessioni/pianta.sbn b/test-data/concessioni/pianta.sbn new file mode 100644 index 0000000..757374b Binary files /dev/null and b/test-data/concessioni/pianta.sbn differ diff --git a/test-data/concessioni/pianta.sbx b/test-data/concessioni/pianta.sbx new file mode 100644 index 0000000..2e6e700 Binary files /dev/null and b/test-data/concessioni/pianta.sbx differ diff --git a/test-data/concessioni/pianta.shp b/test-data/concessioni/pianta.shp index 24ed2bd..7e326d1 100644 Binary files a/test-data/concessioni/pianta.shp and b/test-data/concessioni/pianta.shp differ diff --git a/test-data/concessioni/pianta.shp.xml b/test-data/concessioni/pianta.shp.xml new file mode 100644 index 0000000..d4c60dd --- /dev/null +++ b/test-data/concessioni/pianta.shp.xml @@ -0,0 +1,2 @@ + +20200224093706001.0TRUEProject MAG_Anomalies F:\PROGETTI\Vulci\CONSEGNA_WGS84\Mag_anomalies_WGS84.shp GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]] Monte_Mario_To_WGS_1984_4 PROJCS['Monte_Mario_Italy_2',GEOGCS['GCS_Monte_Mario',DATUM['D_Monte_Mario',SPHEROID['International_1924',6378388.0,297.0]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Transverse_Mercator'],PARAMETER['False_Easting',2520000.0],PARAMETER['False_Northing',0.0],PARAMETER['Central_Meridian',15.0],PARAMETER['Scale_Factor',0.9996],PARAMETER['Latitude_Of_Origin',0.0],UNIT['Meter',1.0]] NO_PRESERVE_SHAPE # NO_VERTICAL diff --git a/test-data/concessioni/pianta.shx b/test-data/concessioni/pianta.shx index b6a49a0..06b652a 100644 Binary files a/test-data/concessioni/pianta.shx and b/test-data/concessioni/pianta.shx differ diff --git a/use-cases/src/main/java/org/gcube/application/cms/usecases/RepublishSingle.java b/use-cases/src/main/java/org/gcube/application/cms/usecases/RepublishSingle.java new file mode 100644 index 0000000..3789e00 --- /dev/null +++ b/use-cases/src/main/java/org/gcube/application/cms/usecases/RepublishSingle.java @@ -0,0 +1,28 @@ +package org.gcube.application.cms.usecases; + +import org.gcube.application.cms.tests.TokenSetter; +import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI; +import org.gcube.application.geoportal.common.model.legacy.Concessione; +import org.gcube.application.geoportal.common.rest.MongoConcessioni; + + +import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni; + +public class RepublishSingle { + + public static void main(String[] args) throws Exception { + TokenSetter.set("/gcube/devsec/devVRE"); + + String id="6138c3a002ad3d1f0cd659f4"; + + MongoConcessioni manager=mongoConcessioni().build(); + + manager.unPublish(id); + + System.out.println("Going to publish... "); + Concessione c=manager.publish(id); + + System.out.println("Result is "+c); + System.out.println("REPORT STATUST : "+c.getReport().getStatus()); + } +} diff --git a/use-cases/src/main/java/org/gcube/application/cms/usecases/UnpublishSingle.java b/use-cases/src/main/java/org/gcube/application/cms/usecases/UnpublishSingle.java deleted file mode 100644 index b1052e4..0000000 --- a/use-cases/src/main/java/org/gcube/application/cms/usecases/UnpublishSingle.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.gcube.application.cms.usecases; - -import org.gcube.application.cms.tests.TokenSetter; -import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI; - - -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni; - -public class UnpublishSingle { - - public static void main(String[] args) throws Exception { - TokenSetter.set("/gcube/devsec/devVRE"); - - ConcessioniManagerI manager=statefulMongoConcessioni().build(); - - manager.publish("610415af02ad3d05b5f81ee3"); - } -}