diff --git a/pom.xml b/pom.xml index b97ad4f53..2cdf54b29 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ 2.8.2 - 2.6.0-SNAPSHOT + 2.6.0-SNAPSHOT-2 3.0.2 2.27 @@ -103,23 +103,6 @@ - org.springframework.boot spring-boot-maven-plugin @@ -160,11 +143,6 @@ json - - com.spotify - docker-maven-plugin - 1.1.1 - org.apache.maven.plugins maven-clean-plugin @@ -372,14 +350,14 @@ gwt-user - com.google.gwt - gwt-dev - - - org.mortbay.jasper - apache-jsp - - + com.google.gwt + gwt-dev + + + org.mortbay.jasper + apache-jsp + + diff --git a/src/main/java/com/databasepreservation/DBVTK.java b/src/main/java/com/databasepreservation/DBVTK.java index d9697950d..4c44d3fff 100644 --- a/src/main/java/com/databasepreservation/DBVTK.java +++ b/src/main/java/com/databasepreservation/DBVTK.java @@ -1,33 +1,38 @@ package com.databasepreservation; + import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; + import javax.servlet.http.HttpServlet; -import com.databasepreservation.common.shared.client.ClientLogger; + import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.boot.web.servlet.context.ServletWebServerInitializedEvent; import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.Bean; -import com.databasepreservation.common.server.BrowserServiceImpl; -import com.databasepreservation.common.server.ClientLoggerImpl; -import com.databasepreservation.common.server.ViewerConfiguration; -import com.databasepreservation.common.shared.ViewerConstants; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import com.databasepreservation.common.server.BrowserServiceImpl; +import com.databasepreservation.common.server.ClientLoggerImpl; +import com.databasepreservation.common.server.ViewerConfiguration; +import com.databasepreservation.common.shared.ViewerConstants; + @SpringBootApplication public class DBVTK { public static void main(String[] args) { ViewerConfiguration.getInstance(); SpringApplication.run(DBVTK.class, args); } + @Configuration public static class DefaultView implements WebMvcConfigurer { + @Override public void addViewControllers(ViewControllerRegistry registry) { if (ViewerConstants.DESKTOP.equals(System.getProperty("env", "server"))) { @@ -36,6 +41,7 @@ public void addViewControllers(ViewControllerRegistry registry) { } } } + @Bean public ServletRegistrationBean browserService() { ServletRegistrationBean bean; diff --git a/src/main/java/com/databasepreservation/common/client/BrowserService.java b/src/main/java/com/databasepreservation/common/client/BrowserService.java index 4291e949d..2712dfff8 100644 --- a/src/main/java/com/databasepreservation/common/client/BrowserService.java +++ b/src/main/java/com/databasepreservation/common/client/BrowserService.java @@ -96,6 +96,12 @@ void editSearch(String databaseUUID, String savedSearchUUID, String name, String void deleteSearch(String databaseUUID, String savedSearchUUID) throws AuthorizationDeniedException, GenericException, RequestNotValidException, NotFoundException; + Boolean deleteDatabaseCollection(String databaseUUID); + + Boolean deleteRowsCollection(String databaseUUID); + + Boolean deleteAllCollections(String databaseUUID); + Boolean isAuthenticationEnabled() throws RODAException; User getAuthenticatedUser() throws RODAException; @@ -139,10 +145,10 @@ boolean createSIARD(String UUID, ConnectionParameters connectionParameters, ExportOptionsParameters exportOptionsParameters, MetadataExportOptionsParameters metadataExportOptionsParameters) throws GenericException; - boolean migrateToDBMS(String databaseUUID, String siard, ConnectionParameters connectionParameters) + boolean migrateToDBMS(String databaseUUID, String siardVersion, String siardPath, ConnectionParameters connectionParameters) throws GenericException; - boolean migrateToSIARD(String databaseUUID, String siardPath, TableAndColumnsParameters tableAndColumnsParameters, + boolean migrateToSIARD(String databaseUUID, String siardVersion, String siardPath, TableAndColumnsParameters tableAndColumnsParameters, ExportOptionsParameters exportOptionsParameters, MetadataExportOptionsParameters metadataExportOptions) throws GenericException; diff --git a/src/main/java/com/databasepreservation/common/client/BrowserServiceAsync.java b/src/main/java/com/databasepreservation/common/client/BrowserServiceAsync.java index cd214a993..2ac481e79 100644 --- a/src/main/java/com/databasepreservation/common/client/BrowserServiceAsync.java +++ b/src/main/java/com/databasepreservation/common/client/BrowserServiceAsync.java @@ -86,6 +86,12 @@ void editSearch(String databaseUUID, String savedSearchUUID, String name, String void deleteSearch(String databaseUUID, String savedSearchUUID, AsyncCallback async); + void deleteDatabaseCollection(String databaseUUID, AsyncCallback async); + + void deleteRowsCollection(String databaseUUID, AsyncCallback async); + + void deleteAllCollections(String databaseUUId, AsyncCallback async); + void isAuthenticationEnabled(AsyncCallback async); /** @@ -142,10 +148,10 @@ void createSIARD(String UUID, ConnectionParameters connectionParameters, ExportOptionsParameters exportOptionsParameters, MetadataExportOptionsParameters metadataExportOptionsParameters, AsyncCallback async); - void migrateToDBMS(String databaseUUID, String siard, ConnectionParameters connectionParameters, + void migrateToDBMS(String databaseUUID, String siardVersion, String siardPath, ConnectionParameters connectionParameters, AsyncCallback async); - void migrateToSIARD(String databaseUUID, String siardPath, TableAndColumnsParameters tableAndColumnsParameters, + void migrateToSIARD(String databaseUUID, String siardVersion, String siardPath, TableAndColumnsParameters tableAndColumnsParameters, ExportOptionsParameters exportOptionsParameters, MetadataExportOptionsParameters metadataExportOptionsParameters, AsyncCallback async); diff --git a/src/main/java/com/databasepreservation/common/server/BrowserServiceImpl.java b/src/main/java/com/databasepreservation/common/server/BrowserServiceImpl.java index 1dd0610a9..f6439f5ba 100644 --- a/src/main/java/com/databasepreservation/common/server/BrowserServiceImpl.java +++ b/src/main/java/com/databasepreservation/common/server/BrowserServiceImpl.java @@ -1,5 +1,8 @@ package com.databasepreservation.common.server; +import static com.databasepreservation.common.shared.ViewerConstants.SOLR_INDEX_ROW_COLLECTION_NAME_PREFIX; +import static com.databasepreservation.common.shared.ViewerConstants.SOLR_SEARCHES_DATABASE_UUID; + import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; @@ -8,6 +11,7 @@ import javax.servlet.ServletConfig; import javax.servlet.ServletException; +import com.databasepreservation.common.server.index.DatabaseRowsSolrManager; import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; @@ -23,6 +27,7 @@ import org.roda.core.data.v2.index.IndexResult; import org.roda.core.data.v2.index.facet.Facets; import org.roda.core.data.v2.index.filter.Filter; +import org.roda.core.data.v2.index.filter.SimpleFilterParameter; import org.roda.core.data.v2.index.sort.Sorter; import org.roda.core.data.v2.index.sublist.Sublist; import org.roda.core.data.v2.user.User; @@ -33,6 +38,7 @@ import com.databasepreservation.common.server.controller.SIARDController; import com.databasepreservation.common.server.controller.UserLoginController; import com.databasepreservation.common.server.index.factory.SolrClientFactory; +import com.databasepreservation.common.server.index.schema.SolrDefaultCollectionRegistry; import com.databasepreservation.common.server.index.utils.SolrUtils; import com.databasepreservation.common.shared.ProgressData; import com.databasepreservation.common.shared.ValidationProgressData; @@ -212,6 +218,40 @@ public void deleteSearch(String databaseUUID, String savedSearchUUID) ViewerFactory.getSolrManager().deleteSavedSearch(savedSearchUUID); } + @Override + public Boolean deleteDatabaseCollection(String databaseUUID) { + ViewerFactory.getSolrManager().deleteDatabasesCollection(databaseUUID); + + return true; + } + + @Override + public Boolean deleteRowsCollection(String databaseUUID) { + try { + final String collectionName = SOLR_INDEX_ROW_COLLECTION_NAME_PREFIX + databaseUUID; + if (SolrClientFactory.get().deleteCollection(collectionName)) { + Filter savedSearchFilter = new Filter(new SimpleFilterParameter(SOLR_SEARCHES_DATABASE_UUID, databaseUUID)); + SolrUtils.delete(ViewerFactory.getSolrClient(), SolrDefaultCollectionRegistry.get(SavedSearch.class), + savedSearchFilter); + + ViewerFactory.getSolrManager().markDatabaseCollection(databaseUUID, ViewerDatabase.Status.METADATA_ONLY); + return true; + } + } catch (GenericException | RequestNotValidException e) { + LOGGER.error("Error trying to remove the collection from Solr", e); + return false; + } + return false; + } + + @Override + public Boolean deleteAllCollections(String databaseUUID) { + if (deleteRowsCollection(databaseUUID)) { + return deleteDatabaseCollection(databaseUUID); + } + return false; + } + @Override public Boolean isAuthenticationEnabled() throws RODAException { return ViewerConfiguration.getInstance().getIsAuthenticationEnabled(); @@ -341,16 +381,18 @@ public boolean createSIARD(String UUID, ConnectionParameters connectionParameter } @Override - public boolean migrateToDBMS(String databaseUUID, String siard, ConnectionParameters connectionParameters) + public boolean migrateToDBMS(String databaseUUID, String siardVersion, String siardPath, + ConnectionParameters connectionParameters) throws GenericException { - return SIARDController.migrateToDBMS(databaseUUID, siard, connectionParameters); + return SIARDController.migrateToDBMS(databaseUUID, siardVersion, siardPath, connectionParameters); } @Override - public boolean migrateToSIARD(String databaseUUID, String siardPath, + public boolean migrateToSIARD(String databaseUUID, String siardVersion, String siardPath, TableAndColumnsParameters tableAndColumnsParameters, ExportOptionsParameters exportOptionsParameters, MetadataExportOptionsParameters metadataExportOptions) throws GenericException { - return SIARDController.migrateToSIARD(databaseUUID, siardPath, tableAndColumnsParameters, exportOptionsParameters, + return SIARDController.migrateToSIARD(databaseUUID, siardVersion, siardPath, tableAndColumnsParameters, + exportOptionsParameters, metadataExportOptions); } diff --git a/src/main/java/com/databasepreservation/common/server/controller/SIARDController.java b/src/main/java/com/databasepreservation/common/server/controller/SIARDController.java index b3ef7c7e4..dddf44e91 100644 --- a/src/main/java/com/databasepreservation/common/server/controller/SIARDController.java +++ b/src/main/java/com/databasepreservation/common/server/controller/SIARDController.java @@ -144,11 +144,11 @@ public static boolean testConnection(String databaseUUID, String parametersJson) return false; } - public static boolean migrateToSIARD(String databaseUUID, String siard, + public static boolean migrateToSIARD(String databaseUUID, String siardVersion, String siardPath, TableAndColumnsParameters tableAndColumnsParameters, ExportOptionsParameters exportOptionsParameters, MetadataExportOptionsParameters metadataExportOptionsParameters) throws GenericException { Reporter reporter = getReporter(databaseUUID); - File f = new File(siard); + File f = new File(siardPath); if (f.exists() && !f.isDirectory()) { LOGGER.info("starting to convert database"); final DatabaseMigration databaseMigration = initializeDatabaseMigration(reporter); @@ -156,8 +156,8 @@ public static boolean migrateToSIARD(String databaseUUID, String siard, databaseMigration.filterFactories(new ArrayList<>()); // BUILD Import Module - databaseMigration.importModule(new SIARD2ModuleFactory()); - databaseMigration.importModuleParameter(SIARD2ModuleFactory.PARAMETER_FILE, siard); + databaseMigration.importModule(getSIARDImportModuleFactory(siardVersion)); + databaseMigration.importModuleParameter(SIARD2ModuleFactory.PARAMETER_FILE, siardPath); // BUILD Export Module setupSIARDExportModule(databaseMigration, tableAndColumnsParameters, exportOptionsParameters, @@ -180,10 +180,10 @@ public static boolean migrateToSIARD(String databaseUUID, String siard, } } - public static boolean migrateToDBMS(String databaseUUID, String siard, ConnectionParameters connectionParameters) + public static boolean migrateToDBMS(String databaseUUID, String siardVersion, String siardPath, ConnectionParameters connectionParameters) throws GenericException { Reporter reporter = getReporter(databaseUUID); - File f = new File(siard); + File f = new File(siardPath); if (f.exists() && !f.isDirectory()) { LOGGER.info("starting to convert database"); final DatabaseMigration databaseMigration = initializeDatabaseMigration(reporter); @@ -191,8 +191,8 @@ public static boolean migrateToDBMS(String databaseUUID, String siard, Connectio databaseMigration.filterFactories(new ArrayList<>()); // BUILD Import Module - databaseMigration.importModule(new SIARD2ModuleFactory()); - databaseMigration.importModuleParameter(SIARD2ModuleFactory.PARAMETER_FILE, siard); + databaseMigration.importModule(getSIARDImportModuleFactory(siardVersion)); + databaseMigration.importModuleParameter(SIARD2ModuleFactory.PARAMETER_FILE, siardPath); // BUILD Export Module final DatabaseModuleFactory exportModuleFactory = getDatabaseExportModuleFactory( @@ -386,7 +386,7 @@ public static String getDatabaseExportModules() throws GenericException { Set databaseModuleFactories = ReflectionUtils.collectDatabaseModuleFactories(); for (DatabaseModuleFactory factory : databaseModuleFactories) { if (!factory.getModuleName().equals("list-tables")) { - if (!factory.getModuleName().toLowerCase().contains("siard")) { + if (!factory.getModuleName().toLowerCase().contains("siard") && !factory.getModuleName().toLowerCase().equals("internal-dbvtk-export")) { if (factory.isEnabled() && factory.producesExportModules()) { getDatabaseModulesParameters(factory, dbptkModule); } @@ -715,6 +715,29 @@ private static DatabaseModuleFactory getDatabaseImportModuleFactory(String modul return factory; } + private static DatabaseModuleFactory getSIARDImportModuleFactory(String version) { + Set databaseModuleFactories = ReflectionUtils.collectDatabaseModuleFactories(); + final String moduleName; + if (version.equals("2.0") || version.equals("2.1")) { + moduleName = "siard-2"; + } else if (version.equals("1.0")) { + moduleName = "siard-1"; + } else { + moduleName = ""; + } + + DatabaseModuleFactory factory = null; + + for (DatabaseModuleFactory dbFactory : databaseModuleFactories) { + if (dbFactory.isEnabled() && dbFactory.producesImportModules()) { + if (dbFactory.getModuleName().equals(moduleName)) + factory = dbFactory; + } + } + + return factory; + } + private static DatabaseModuleFactory getDatabaseExportModuleFactory(String moduleName) { Set databaseModuleFactories = ReflectionUtils.collectDatabaseModuleFactories(); diff --git a/src/main/java/com/databasepreservation/common/server/index/DatabaseRowsSolrManager.java b/src/main/java/com/databasepreservation/common/server/index/DatabaseRowsSolrManager.java index fe4eb1b8b..27a35e2ba 100644 --- a/src/main/java/com/databasepreservation/common/server/index/DatabaseRowsSolrManager.java +++ b/src/main/java/com/databasepreservation/common/server/index/DatabaseRowsSolrManager.java @@ -7,6 +7,7 @@ import java.util.Arrays; import java.util.List; +import com.databasepreservation.common.server.index.schema.collections.DatabasesCollection; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrRequest; import org.apache.solr.client.solrj.SolrServerException; @@ -104,8 +105,8 @@ public void removeDatabase(ViewerDatabase database, Path lobFolder) throws Viewe } // delete related saved searches - Filter savedSearchFilter = new Filter( - new SimpleFilterParameter(ViewerConstants.SOLR_SEARCHES_DATABASE_UUID, database.getUUID())); + Filter savedSearchFilter = new Filter( + new SimpleFilterParameter(ViewerConstants.SOLR_SEARCHES_DATABASE_UUID, database.getUUID())); try { SolrUtils.delete(client, SolrDefaultCollectionRegistry.get(SavedSearch.class), savedSearchFilter); LOGGER.debug("Deleted saved searches for database {}", database.getUUID()); @@ -222,6 +223,17 @@ public void deleteSavedSearch(String uuid) { } } + public void deleteDatabasesCollection(final String UUID) { + try { + client.deleteById(ViewerConstants.SOLR_INDEX_DATABASES_COLLECTION_NAME, UUID); + client.commit(ViewerConstants.SOLR_INDEX_DATABASES_COLLECTION_NAME, true, true); + } catch (SolrServerException e) { + LOGGER.debug("Solr error while attempting to delete search", e); + } catch (IOException e) { + LOGGER.debug("IOException while attempting to delete search", e); + } + } + private void insertDocument(Class objClass, T obj) throws ViewerException { SolrCollection solrCollection = SolrDefaultCollectionRegistry.get(objClass); try { @@ -284,12 +296,17 @@ private void insertDocument(String collection, SolrInputDocument doc) throws Vie } } + public void markDatabaseCollection(final String databaseUUID, ViewerDatabase.Status status) { + updateDatabaseFields(databaseUUID, Pair.of(ViewerConstants.SOLR_DATABASES_STATUS, status.toString())); + } + public void markDatabaseAsReady(ViewerDatabaseFromToolkit viewerDatabase) throws ViewerException { updateDatabaseFields(viewerDatabase.getUUID(), Pair.of(ViewerConstants.SOLR_DATABASES_STATUS, ViewerDatabase.Status.AVAILABLE.toString())); } - private void updateDatabaseFields(String databaseUUID, Pair... fields) { + @SafeVarargs + private final void updateDatabaseFields(String databaseUUID, Pair... fields) { // create document to update this DB SolrInputDocument doc = new SolrInputDocument(); doc.addField(ViewerConstants.INDEX_ID, databaseUUID); diff --git a/src/main/java/com/databasepreservation/common/server/index/factory/CloudSolrClientFactory.java b/src/main/java/com/databasepreservation/common/server/index/factory/CloudSolrClientFactory.java index d8d82c977..ecb60f9df 100644 --- a/src/main/java/com/databasepreservation/common/server/index/factory/CloudSolrClientFactory.java +++ b/src/main/java/com/databasepreservation/common/server/index/factory/CloudSolrClientFactory.java @@ -193,6 +193,23 @@ protected boolean createCollection(String collection, Path configPath) { return ret; } + @Override + public boolean deleteCollection(String collection) { + try { + CollectionAdminRequest.Delete deleteCollection = CollectionAdminRequest.deleteCollection(collection); + final CollectionAdminResponse response = deleteCollection.process(getSolrClient()); + if (!response.isSuccess()) { + LOGGER.error("Could not create collection {}: {}", collection, response.getErrorMessages()); + return false; + } else { + return true; + } + } catch (SolrServerException | SolrException | IOException e) { + LOGGER.error("Error creating collection {}", collection, e); + return false; + } + } + @Override protected Collection getCollectionList() { Collection ret = new ArrayList<>(); diff --git a/src/main/java/com/databasepreservation/common/server/index/factory/EmbeddedSolrClientFactory.java b/src/main/java/com/databasepreservation/common/server/index/factory/EmbeddedSolrClientFactory.java index f2b346de6..8e585f48e 100644 --- a/src/main/java/com/databasepreservation/common/server/index/factory/EmbeddedSolrClientFactory.java +++ b/src/main/java/com/databasepreservation/common/server/index/factory/EmbeddedSolrClientFactory.java @@ -97,4 +97,17 @@ protected boolean createCollection(String collection, Path configPath) { return ret; } + @Override + public boolean deleteCollection(String collection) { + try { + CoreContainer coreContainer = getSolrClient().getCoreContainer(); + coreContainer.unload(collection, true, true, true); + + return true; + } catch (SolrException e) { + LOGGER.error("Error deleting collection {}", collection, e); + return false; + } + } + } diff --git a/src/main/java/com/databasepreservation/common/server/index/factory/SolrClientFactory.java b/src/main/java/com/databasepreservation/common/server/index/factory/SolrClientFactory.java index d41f4f11e..35bc1a833 100644 --- a/src/main/java/com/databasepreservation/common/server/index/factory/SolrClientFactory.java +++ b/src/main/java/com/databasepreservation/common/server/index/factory/SolrClientFactory.java @@ -90,6 +90,8 @@ protected void bootstrapDefaultCollections() throws IOException { protected abstract boolean createCollection(String collection, Path config); + public abstract boolean deleteCollection(String collection); + protected abstract Collection getCollectionList(); public boolean createCollection(String collection) { diff --git a/src/main/java/com/databasepreservation/common/shared/ViewerConstants.java b/src/main/java/com/databasepreservation/common/shared/ViewerConstants.java index 429fc5697..4b3122b4d 100644 --- a/src/main/java/com/databasepreservation/common/shared/ViewerConstants.java +++ b/src/main/java/com/databasepreservation/common/shared/ViewerConstants.java @@ -286,6 +286,9 @@ public class ViewerConstants { public static final String SIARD2 = "siard-2"; public static final String SIARDDK = "siard-dk"; public static final String SIARD2_1 = "siard-2.1"; + public static final String SIARD_V10 = "1.0"; + public static final String SIARD_V20 = "2.0"; + public static final String SIARD_V21 = "2.1"; /* * DBPTK Metadata diff --git a/src/main/java/com/databasepreservation/common/shared/client/common/dialogs/CommonDialogs.java b/src/main/java/com/databasepreservation/common/shared/client/common/dialogs/CommonDialogs.java index 573765bc9..f66ff4a52 100644 --- a/src/main/java/com/databasepreservation/common/shared/client/common/dialogs/CommonDialogs.java +++ b/src/main/java/com/databasepreservation/common/shared/client/common/dialogs/CommonDialogs.java @@ -19,10 +19,12 @@ import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.regexp.shared.RegExp; +import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.TextBox; @@ -31,13 +33,19 @@ public class CommonDialogs { private static final ClientMessages messages = GWT.create(ClientMessages.class); - public static void showConfirmDialog(String title, String message, String cancelButtonText, String confirmButtonText, - final AsyncCallback callback) { + public enum Level { + DANGER, NORMAL, WARNING + } + + public static void showConfirmDialog(String title, SafeHtml message, String cancelButtonText, String confirmButtonText, + Level level, String width, + final AsyncCallback callback) { final DialogBox dialogBox = new DialogBox(false, true); dialogBox.setText(title); FlowPanel layout = new FlowPanel(); - Label messageLabel = new Label(message); + + HTML messageLabel = new HTML(message); Button cancelButton = new Button(cancelButtonText); Button confirmButton = new Button(confirmButtonText); FlowPanel footer = new FlowPanel(); @@ -48,34 +56,48 @@ public static void showConfirmDialog(String title, String message, String cancel footer.add(confirmButton); dialogBox.setWidget(layout); + dialogBox.setWidth(width); dialogBox.setGlassEnabled(true); dialogBox.setAnimationEnabled(false); - cancelButton.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - dialogBox.hide(); - callback.onSuccess(false); - } + cancelButton.addClickHandler(event -> { + dialogBox.hide(); + callback.onSuccess(false); }); - confirmButton.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - dialogBox.hide(); - callback.onSuccess(true); - } + confirmButton.addClickHandler(event -> { + dialogBox.hide(); + callback.onSuccess(true); }); - dialogBox.addStyleName("wui-dialog-confirm"); - layout.addStyleName("wui-dialog-layout"); - footer.addStyleName("wui-dialog-layout-footer"); - messageLabel.addStyleName("wui-dialog-message"); - cancelButton.addStyleName("btn btn-link"); - confirmButton.addStyleName("btn btn-play"); + switch (level) { + case WARNING: + dialogBox.addStyleName("wui-dialog-confirm"); + layout.addStyleName("wui-dialog-layout"); + footer.addStyleName("wui-dialog-layout-footer"); + messageLabel.addStyleName("wui-dialog-message"); + cancelButton.addStyleName("btn btn-link"); + confirmButton.addStyleName("btn btn-primary"); + break; + case DANGER: + dialogBox.addStyleName("dialog-persist-errors"); + layout.addStyleName("dialog-persist-errors-layout"); + footer.addStyleName("dialog-persist-errors-layout-footer"); + messageLabel.addStyleName("wui-dialog-message"); + cancelButton.addStyleName("btn btn-link"); + confirmButton.addStyleName("btn btn-danger btn-delete"); + break; + case NORMAL: + default: + dialogBox.addStyleName("wui-dialog-confirm"); + layout.addStyleName("wui-dialog-layout"); + footer.addStyleName("wui-dialog-layout-footer"); + messageLabel.addStyleName("wui-dialog-message"); + cancelButton.addStyleName("btn btn-link"); + confirmButton.addStyleName("btn btn-play"); + break; + } dialogBox.center(); dialogBox.show(); diff --git a/src/main/java/com/databasepreservation/desktop/client/common/MetadataField.java b/src/main/java/com/databasepreservation/desktop/client/common/MetadataField.java index 85baf4fa8..e78e61e4d 100644 --- a/src/main/java/com/databasepreservation/desktop/client/common/MetadataField.java +++ b/src/main/java/com/databasepreservation/desktop/client/common/MetadataField.java @@ -35,7 +35,6 @@ public static MetadataField createInstance(String value) { private MetadataField(String key, String value) { initWidget(binder.createAndBindUi(this)); - if (key != null) { metadataKey.setText(key); } else { diff --git a/src/main/java/com/databasepreservation/desktop/client/common/dialogs/Dialogs.java b/src/main/java/com/databasepreservation/desktop/client/common/dialogs/Dialogs.java index 0a876479f..56059296e 100644 --- a/src/main/java/com/databasepreservation/desktop/client/common/dialogs/Dialogs.java +++ b/src/main/java/com/databasepreservation/desktop/client/common/dialogs/Dialogs.java @@ -463,7 +463,7 @@ public static void showInformationDialog(String title, String message, String co footer.add(btnClose); dialogBox.setWidget(layout); - dialogBox.setWidth("300px"); + dialogBox.setWidth("500px"); btnClose.addClickHandler(event -> { dialogBox.hide(); diff --git a/src/main/java/com/databasepreservation/desktop/client/common/lists/DatabaseList.java b/src/main/java/com/databasepreservation/desktop/client/common/lists/DatabaseList.java index 7b17aea99..5af17bb53 100644 --- a/src/main/java/com/databasepreservation/desktop/client/common/lists/DatabaseList.java +++ b/src/main/java/com/databasepreservation/desktop/client/common/lists/DatabaseList.java @@ -106,6 +106,14 @@ public SafeHtml getValue(ViewerDatabase database) { } }; + Column versionColumn = new TooltipDatabaseColumn() { + @Override + public SafeHtml getValue(ViewerDatabase database) { + return database != null ? SafeHtmlUtils.fromString(database.getSIARDVersion()) + : SafeHtmlUtils.fromString("unknown"); + } + }; + Column validColumn = new ValidDatabaseColumn() { @Override public SafeHtml getValue(ViewerDatabase database) { @@ -141,6 +149,7 @@ public String getValue(ViewerDatabase object) { addColumn(archivalDateColumn, messages.managePageTableHeaderTextForArchivalDate(), true, TextAlign.NONE, 5); addColumn(locationColumn, messages.managePageTableHeaderTextForSIARDLocation(), true, TextAlign.NONE, 8); addColumn(sizeColumn, messages.managePageTableHeaderTextForSIARDSize(), true, TextAlign.NONE, 4); + addColumn(versionColumn, messages.managePageTableHeaderTextForSIARDVersion(), true, TextAlign.NONE, 4); addColumn(validColumn, messages.managePageTableHeaderTextForSIARDValidationStatus(), true, TextAlign.NONE, 5); addColumn(statusColumn, messages.managePageTableHeaderTextForDatabaseStatus(), true, TextAlign.NONE, 5); addColumn(openColumn, messages.managePageTableHeaderTextForActions(), true, TextAlign.NONE, 5); diff --git a/src/main/java/com/databasepreservation/desktop/client/dbptk/SIARDMainPage.java b/src/main/java/com/databasepreservation/desktop/client/dbptk/SIARDMainPage.java index 3ed2bed0c..8071cb60a 100644 --- a/src/main/java/com/databasepreservation/desktop/client/dbptk/SIARDMainPage.java +++ b/src/main/java/com/databasepreservation/desktop/client/dbptk/SIARDMainPage.java @@ -11,6 +11,8 @@ import com.databasepreservation.common.shared.client.breadcrumb.BreadcrumbItem; import com.databasepreservation.common.shared.client.breadcrumb.BreadcrumbPanel; import com.databasepreservation.common.shared.client.common.DefaultAsyncCallback; +import com.databasepreservation.common.shared.client.common.desktop.GenericField; +import com.databasepreservation.common.shared.client.common.dialogs.CommonDialogs; import com.databasepreservation.common.shared.client.common.utils.ApplicationType; import com.databasepreservation.common.shared.client.common.utils.JavascriptUtils; import com.databasepreservation.common.shared.client.tools.BreadcrumbManager; @@ -29,6 +31,7 @@ import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; @@ -91,6 +94,9 @@ public static SIARDMainPage getInstance(String databaseUUID) { @UiField SimplePanel description; + @UiField + Button btnBack, btnExclude; + private SIARDMainPage(final String databaseUUID) { initWidget(binder.createAndBindUi(this)); @@ -123,6 +129,8 @@ public void onSuccess(String result) { database.getMetadata().getName()); BreadcrumbManager.updateBreadcrumb(breadcrumb, breadcrumbItems); + setupFooterButtons(); + container.remove(loading); } }); @@ -157,10 +165,15 @@ private NavigationPanel populateNavigationPanelSIARD() { HistoryManager.gotoSendToLiveDBMSExportFormat(database.getUUID(), database.getMetadata().getName()); }); - MetadataField path = MetadataField.createInstance(PathUtils.getFileName(database.getSIARDPath())); - MetadataField size = MetadataField.createInstance(Humanize.readableFileSize(database.getSIARDSize())); + MetadataField version = MetadataField.createInstance(messages.SIARDHomePageLabelForSIARDVersion(), + database.getSIARDVersion()); + version.setCSSMetadata(null, "label-field", "value-field"); + + MetadataField size = MetadataField.createInstance(messages.SIARDHomePageLabelForSIARDSize(), + Humanize.readableFileSize(database.getSIARDSize())); + size.setCSSMetadata(null, "label-field", "value-field"); - Button btnShowFiles = new Button(messages.SIARDHomePageButtonTextShowFile()); + Button btnShowFiles = new Button(PathUtils.getFileName(database.getSIARDPath())); btnShowFiles.addStyleName("btn btn-link-info"); if (ApplicationType.getType().equals(ViewerConstants.DESKTOP)) { @@ -169,14 +182,17 @@ private NavigationPanel populateNavigationPanelSIARD() { }); } + GenericField path = GenericField.createInstance(messages.SIARDHomePageLabelForSIARDPath(), btnShowFiles); + path.setCSSMetadata(null, "label-field"); + NavigationPanel siard = NavigationPanel.createInstance(messages.SIARDHomePageOptionsHeaderForSIARD()); siard.addButton(btnEditMetadata); siard.addButton(btnMigrateToSIARD); siard.addButton(btnSendToLiveDBMS); + siard.addToInfoPanel(version); siard.addToInfoPanel(path); - siard.addToInfoPanel(btnShowFiles); siard.addToInfoPanel(size); return siard; @@ -191,21 +207,26 @@ private NavigationPanel populateNavigationPanelValidation() { btnRunValidator.setText(messages.SIARDHomePageButtonTextValidateNow()); btnRunValidator.addStyleName("btn btn-link-info"); btnRunValidator.addClickHandler(event -> { - Dialogs.showValidatorSettings(messages.SIARDValidatorSettings(), messages.basicActionCancel(), - messages.basicActionConfirm(), validator, new DefaultAsyncCallback() { - @Override - public void onSuccess(Boolean result) { - if (result && validator.getReporterPathFile() != null) { - ValidatorPage.clear(database.getUUID()); - if (validator.getUdtPathFile() == null) { - HistoryManager.gotoSIARDValidator(database.getUUID(), validator.getReporterPathFile()); - } else { - HistoryManager.gotoSIARDValidator(database.getUUID(), validator.getReporterPathFile(), - validator.getUdtPathFile()); + if (database.getSIARDVersion().equals(ViewerConstants.SIARD_V21)) { + Dialogs.showValidatorSettings(messages.SIARDValidatorSettings(), messages.basicActionCancel(), + messages.basicActionConfirm(), validator, new DefaultAsyncCallback() { + @Override + public void onSuccess(Boolean result) { + if (result && validator.getReporterPathFile() != null) { + ValidatorPage.clear(database.getUUID()); + if (validator.getUdtPathFile() == null) { + HistoryManager.gotoSIARDValidator(database.getUUID(), validator.getReporterPathFile()); + } else { + HistoryManager.gotoSIARDValidator(database.getUUID(), validator.getReporterPathFile(), + validator.getUdtPathFile()); + } } } - } - }); + }); + } else { + Dialogs.showInformationDialog(messages.SIARDValidatorDialogInformationTitle(), + messages.SIARDValidatorTextForVersionCannotBeValidated(), messages.basicActionUnderstood(), "btn btn-link"); + } }); validation.addButton(btnRunValidator); @@ -310,33 +331,55 @@ private NavigationPanel populateNavigationPanelBrowse() { btnDelete.addStyleName("btn btn-link-info"); btnDelete.setVisible(false); + btnDelete.addClickHandler(event -> { + if (database.getStatus().equals(ViewerDatabase.Status.AVAILABLE) + || database.getStatus().equals(ViewerDatabase.Status.ERROR)) { + CommonDialogs.showConfirmDialog(messages.SIARDHomePageDialogTitleForDelete(), + messages.SIARDHomePageTextForDeleteFromSolr(), messages.basicActionCancel(), messages.basicActionConfirm(), + CommonDialogs.Level.DANGER, "500px", new DefaultAsyncCallback() { + @Override + public void onSuccess(Boolean result) { + if (result) { + deleteDatabaseFromSolr(); + } + } + }); + } + }); + btnIngest = new Button(); btnIngest.setText(messages.SIARDHomePageButtonTextForIngest()); btnIngest.addStyleName("btn btn-link-info"); btnIngest.setVisible(false); btnIngest.addClickHandler(event -> { - if (!btnIngestClicked) { - btnIngestClicked = true; + if (database.getSIARDVersion().equals(ViewerConstants.SIARD_V21)) { - HistoryManager.gotoIngestSIARDData(database.getUUID(), database.getMetadata().getName()); - BrowserService.Util.getInstance().uploadSIARD(database.getSIARDPath(), database.getUUID(), - new DefaultAsyncCallback() { - @Override - public void onFailure(Throwable caught) { - instances.clear(); - HistoryManager.gotoSIARDInfo(database.getUUID()); - Dialogs.showErrors(messages.SIARDHomePageDialogTitleForBrowsing(), caught.getMessage(), - messages.basicActionClose()); - } + if (!btnIngestClicked) { + btnIngestClicked = true; - @Override - public void onSuccess(String databaseUUID) { - HistoryManager.gotoDesktopDatabase(databaseUUID); - Dialogs.showInformationDialog(messages.SIARDHomePageDialogTitleForBrowsing(), - messages.SIARDHomePageTextForIngestSuccess(), messages.basicActionClose(), "btn btn-link"); - } - }); + HistoryManager.gotoIngestSIARDData(database.getUUID(), database.getMetadata().getName()); + BrowserService.Util.getInstance().uploadSIARD(database.getSIARDPath(), database.getUUID(), + new DefaultAsyncCallback() { + @Override + public void onFailure(Throwable caught) { + instances.clear(); + HistoryManager.gotoSIARDInfo(database.getUUID()); + Dialogs.showErrors(messages.SIARDHomePageDialogTitleForBrowsing(), caught.getMessage(), + messages.basicActionClose()); + } + + @Override + public void onSuccess(String databaseUUID) { + HistoryManager.gotoDesktopDatabase(databaseUUID); + Dialogs.showInformationDialog(messages.SIARDHomePageDialogTitleForBrowsing(), + messages.SIARDHomePageTextForIngestSuccess(), messages.basicActionClose(), "btn btn-link"); + } + }); + } + } else { + Dialogs.showInformationDialog(messages.SIARDHomePageDialogTitleForBrowsing(), + messages.SIARDHomePageTextForIngestNotSupported(), messages.basicActionUnderstood(), "btn btn-link"); } }); @@ -344,11 +387,13 @@ public void onSuccess(String databaseUUID) { browse.addButton(btnBrowse); browse.addButton(btnDelete); - if (database.getStatus().equals(ViewerDatabase.Status.AVAILABLE)) { + if (database.getStatus().equals(ViewerDatabase.Status.AVAILABLE) + || database.getStatus().equals(ViewerDatabase.Status.ERROR)) { btnBrowse.setVisible(true); - // btnDelete.setVisible(true); + btnDelete.setVisible(true); } else if (database.getStatus().equals(ViewerDatabase.Status.METADATA_ONLY)) { btnIngest.setVisible(true); + btnDelete.setVisible(false); } browsingStatus = MetadataField.createInstance(messages.SIARDHomePageLabelForBrowseStatus(), @@ -571,10 +616,11 @@ private void updateValidationButtons(Boolean enable) { private void updateBrowsingStatus() { browsingStatus.updateText(SolrHumanizer.humanize(database.getStatus())); - if (database.getStatus().equals(ViewerDatabase.Status.AVAILABLE)) { + if (database.getStatus().equals(ViewerDatabase.Status.AVAILABLE) + || database.getStatus().equals(ViewerDatabase.Status.ERROR)) { btnIngest.setVisible(false); btnBrowse.setVisible(true); - // btnDelete.setVisible(true); + btnDelete.setVisible(true); } else if (database.getStatus().equals(ViewerDatabase.Status.INGESTING)) { if (btnIngestClicked) { btnIngest.setVisible(true); @@ -583,9 +629,36 @@ private void updateBrowsingStatus() { btnIngest.addClickHandler( event -> HistoryManager.gotoIngestSIARDData(database.getUUID(), database.getMetadata().getName())); } + } else if (database.getStatus().equals(ViewerDatabase.Status.METADATA_ONLY)) { + btnIngest.setVisible(true); + btnBrowse.setVisible(false); + btnDelete.setVisible(false); + btnIngestClicked = false; } } + private void setupFooterButtons() { + btnBack.setText(messages.basicActionBack()); + btnExclude.setText(messages.basicActionDelete()); + + btnBack.addClickHandler(event -> { + HistoryManager.gotoDesktopDatabase(); + }); + + btnExclude.addClickHandler(event -> { + CommonDialogs.showConfirmDialog(messages.SIARDHomePageDialogTitleForDelete(), + messages.SIARDHomePageTextForDeleteAll(), messages.basicActionCancel(), messages.basicActionConfirm(), + CommonDialogs.Level.DANGER, "500px", new DefaultAsyncCallback() { + @Override + public void onSuccess(Boolean result) { + if (result) { + deleteAll(); + } + } + }); + }); + } + @Override protected void onAttach() { super.onAttach(); @@ -593,4 +666,50 @@ protected void onAttach() { refreshInstance(database.getUUID()); } } + + private void deleteDatabaseFromSolr() { + if (database.getStatus().equals(ViewerDatabase.Status.AVAILABLE) + || database.getStatus().equals(ViewerDatabase.Status.ERROR)) { + BrowserService.Util.getInstance().deleteRowsCollection(database.getUUID(), new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + + } + + @Override + public void onSuccess(Boolean result) { + refreshInstance(database.getUUID()); + } + }); + } + } + + private void deleteAll() { + if (database.getStatus().equals(ViewerDatabase.Status.AVAILABLE) + || database.getStatus().equals(ViewerDatabase.Status.ERROR)) { + BrowserService.Util.getInstance().deleteAllCollections(database.getUUID(), new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + + } + + @Override + public void onSuccess(Boolean result) { + HistoryManager.gotoDesktopDatabase(); + } + }); + } else { + BrowserService.Util.getInstance().deleteDatabaseCollection(database.getUUID(), new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + + } + + @Override + public void onSuccess(Boolean result) { + HistoryManager.gotoDesktopDatabase(); + } + }); + } + } } \ No newline at end of file diff --git a/src/main/java/com/databasepreservation/desktop/client/dbptk/SIARDMainPage.ui.xml b/src/main/java/com/databasepreservation/desktop/client/dbptk/SIARDMainPage.ui.xml index c6ac01d68..bacab6ae0 100644 --- a/src/main/java/com/databasepreservation/desktop/client/dbptk/SIARDMainPage.ui.xml +++ b/src/main/java/com/databasepreservation/desktop/client/dbptk/SIARDMainPage.ui.xml @@ -4,11 +4,20 @@ - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/databasepreservation/desktop/client/dbptk/wizard/download/DBMSWizardManager.java b/src/main/java/com/databasepreservation/desktop/client/dbptk/wizard/download/DBMSWizardManager.java index fffad9511..298d74c18 100644 --- a/src/main/java/com/databasepreservation/desktop/client/dbptk/wizard/download/DBMSWizardManager.java +++ b/src/main/java/com/databasepreservation/desktop/client/dbptk/wizard/download/DBMSWizardManager.java @@ -174,7 +174,8 @@ public void onSuccess(IsIndexed result) { progressBarPanel.setSubtitleText(messages.progressBarPanelTextForDBMSWizardSubTitle()); wizardContent.add(progressBarPanel); - BrowserService.Util.getInstance().migrateToDBMS(databaseUUID, siardPath, connectionParameters, + BrowserService.Util.getInstance().migrateToDBMS(databaseUUID, database.getSIARDVersion(), siardPath, + connectionParameters, new DefaultAsyncCallback() { @Override diff --git a/src/main/java/com/databasepreservation/desktop/client/dbptk/wizard/download/SIARDWizardManager.java b/src/main/java/com/databasepreservation/desktop/client/dbptk/wizard/download/SIARDWizardManager.java index 8e95567c1..4c2252ae4 100644 --- a/src/main/java/com/databasepreservation/desktop/client/dbptk/wizard/download/SIARDWizardManager.java +++ b/src/main/java/com/databasepreservation/desktop/client/dbptk/wizard/download/SIARDWizardManager.java @@ -212,7 +212,7 @@ public void onSuccess(IsIndexed result) { progressBarPanel.setSubtitleText(messages.progressBarPanelTextForCreateWizardProgressSubTitle()); wizardContent.add(progressBarPanel); - BrowserService.Util.getInstance().migrateToSIARD(databaseUUID, siardPath, tableAndColumnsParameters, + BrowserService.Util.getInstance().migrateToSIARD(databaseUUID, database.getSIARDVersion(), siardPath, tableAndColumnsParameters, exportOptionsParameters, metadataExportOptionsParameters, new DefaultAsyncCallback() { @Override diff --git a/src/main/java/com/databasepreservation/desktop/client/main/MainPanelDesktop.java b/src/main/java/com/databasepreservation/desktop/client/main/MainPanelDesktop.java index 7afc2feb9..e22c1bb94 100644 --- a/src/main/java/com/databasepreservation/desktop/client/main/MainPanelDesktop.java +++ b/src/main/java/com/databasepreservation/desktop/client/main/MainPanelDesktop.java @@ -480,7 +480,7 @@ public void setContent(RightPanelLoader rightPanelLoader) { private void setContent(String databaseUUID, RightPanelLoader rightPanelLoader) { GWT.log("setContent, dbuid " + databaseUUID); DatabasePanel databasePanel = DatabasePanel.getInstance(databaseUUID, false); - databasePanel.setTopLevelPanelCSS("browseContent skip_padding"); + databasePanel.setTopLevelPanelCSS("browseContent wrapper skip_padding"); contentPanel.setWidget(databasePanel); databasePanel.load(rightPanelLoader); JavascriptUtils.scrollToElement(contentPanel.getElement()); diff --git a/src/main/java/config/i18n/client/ClientMessages.java b/src/main/java/config/i18n/client/ClientMessages.java index 3e3964679..40f1ae0e1 100644 --- a/src/main/java/config/i18n/client/ClientMessages.java +++ b/src/main/java/config/i18n/client/ClientMessages.java @@ -1,6 +1,7 @@ package config.i18n.client; import com.google.gwt.i18n.client.Messages; +import com.google.gwt.safehtml.shared.SafeHtml; /** * @author Bruno Ferreira @@ -497,6 +498,10 @@ public interface ClientMessages extends Messages { String basicActionImport(); + String basicActionUnderstood(); + + String basicActionDelete(); + /********************************************* * Sidebar Menus ********************************************/ @@ -585,6 +590,8 @@ public interface ClientMessages extends Messages { String managePageTableHeaderTextForSIARDSize(); + String managePageTableHeaderTextForSIARDVersion(); + String managePageTableHeaderTextForSIARDValidationStatus(); String managePageTableHeaderTextForDatabaseStatus(); @@ -646,6 +653,12 @@ public interface ClientMessages extends Messages { String SIARDHomePageLabelForViewerMetadataDescription(); + String SIARDHomePageLabelForSIARDVersion(); + + String SIARDHomePageLabelForSIARDSize(); + + String SIARDHomePageLabelForSIARDPath(); + String SIARDHomePageLabelForValidatedAt(); String SIARDHomePageLabelForValidationVersion(); @@ -676,6 +689,14 @@ public interface ClientMessages extends Messages { String SIARDHomePageDialogTitleForBrowsing(); + String SIARDHomePageDialogTitleForDelete(); + + SafeHtml SIARDHomePageTextForDeleteAll(); + + SafeHtml SIARDHomePageTextForDeleteFromSolr(); + + String SIARDHomePageTextForIngestNotSupported(); + String SIARDHomePageTextForIngestSuccess(); /******************************************** @@ -893,6 +914,10 @@ public interface ClientMessages extends Messages { ********************************************/ String SIARDValidatorSettings(); + String SIARDValidatorDialogInformationTitle(); + + String SIARDValidatorTextForVersionCannotBeValidated(); + String allowedTypes(); String reporterDestinationFolder(); diff --git a/src/main/resources/config/i18n/client/ClientMessages.properties b/src/main/resources/config/i18n/client/ClientMessages.properties index 130343ae0..a8fb36384 100644 --- a/src/main/resources/config/i18n/client/ClientMessages.properties +++ b/src/main/resources/config/i18n/client/ClientMessages.properties @@ -148,6 +148,8 @@ basicActionNew=New basicActionSave=Save basicActionTest=Test basicActionImport=Import +basicActionUnderstood=Understood +basicActionDelete=Delete ############################################################################# # Sidebar Menus # @@ -202,6 +204,7 @@ managePageTableHeaderTextForProductName=Producer application managePageTableHeaderTextForArchivalDate=Archival date managePageTableHeaderTextForSIARDLocation=Location managePageTableHeaderTextForSIARDSize=Size +managePageTableHeaderTextForSIARDVersion=Version managePageTableHeaderTextForSIARDValidationStatus=Valid managePageTableHeaderTextForActions=Actions managePageTableHeaderTextForDatabaseStatus=Status @@ -220,6 +223,9 @@ SIARDHomePageButtonTextValidateNow=validate now SIARDHomePageButtonTextRunValidationAgain=run again SIARDHomePageButtonTextOpenValidate=open validator SIARDHomePageButtonTextSeeReport=see report +SIARDHomePageLabelForSIARDVersion=Version: +SIARDHomePageLabelForSIARDPath=Path: +SIARDHomePageLabelForSIARDSize=Size: SIARDHomePageLabelForViewerMetadataName=Database name: SIARDHomePageLabelForViewerMetadataArchivalDate=Archival date: SIARDHomePageLabelForViewerMetadataArchiver=Archiver: @@ -258,8 +264,11 @@ SIARDHomePageTextForSIARDInvalid=SIARD {0} is invalid SIARDHomePageTextForIngestSIARDTitle=Prepare SIARD for browsing SIARDHomePageTextForIngestSIARDSubtitle=This process may take a while. Please wait for it to finish SIARDHomePageDialogTitleForBrowsing=Browsing +SIARDHomePageTextForIngestNotSupported=Browsing the data only supports SIARD version 2.1, in order to browse the SIARD export it using the option '"'migrate to SIARD'"' available in the '"'SIARD'"' options. SIARDHomePageTextForIngestSuccess=SIARD data successfully imported - +SIARDHomePageDialogTitleForDelete=Delete SIARD file +SIARDHomePageTextForDeleteAll=Are you sure you want to {startBold,}permanently{endBold,} remove the SIARD from the application? This will remove the SIARD data and metadata. If you are aware of the consequences confirm the action, otherwise cancel. +SIARDHomePageTextForDeleteFromSolr=Are you sure you want to {startBold,}unload{endBold,} the SIARD data from the application? This will remove the SIARD data. If you are aware of the consequences confirm the action, otherwise cancel. SIARD=SIARD dialogReimportSIARDTitle=SIARD File Found dialogReimportSIARD=Do you want to reimport? @@ -631,6 +640,8 @@ errorMessagesOpenFile=Open file error # SIARD Validator # ############################################################################# SIARDValidatorSettings=Validator settings +SIARDValidatorDialogInformationTitle=Validator Information +SIARDValidatorTextForVersionCannotBeValidated=Validator only supports SIARD version 2.1, in order to validate the SIARD export it using the option '"'migrate to SIARD'"' available in the '"'SIARD'"' options. allowedTypes=Allowed data types: reporterDestinationFolder=Report destination folder: reporterTip=Path to store the SIARD validation report diff --git a/src/main/resources/config/i18n/client/ClientMessages_pt_PT.properties b/src/main/resources/config/i18n/client/ClientMessages_pt_PT.properties index 1662df787..2998a642d 100644 --- a/src/main/resources/config/i18n/client/ClientMessages_pt_PT.properties +++ b/src/main/resources/config/i18n/client/ClientMessages_pt_PT.properties @@ -139,6 +139,8 @@ basicActionNew=Novo basicActionSave=Gravar basicActionTest=Testar basicActionImport=Importar +basicActionUnderstood=Percebi +basicActionDelete=Eliminar ############################################################################# # Sidebar Menus # @@ -193,6 +195,7 @@ managePageTableHeaderTextForProductName=Bases de dados managePageTableHeaderTextForArchivalDate=Data de arquivo managePageTableHeaderTextForSIARDLocation=Localização managePageTableHeaderTextForSIARDSize=Tamanho +managePageTableHeaderTextForSIARDVersion=Versão managePageTableHeaderTextForActions=Ações managePageTableHeaderTextForDatabaseStatus=Estado managePageTableHeaderTextForSIARDValidationStatus=Validação @@ -211,6 +214,9 @@ SIARDHomePageButtonTextValidateNow=validar agora SIARDHomePageButtonTextRunValidationAgain=executar novamente SIARDHomePageButtonTextOpenValidate=abrir validador SIARDHomePageButtonTextSeeReport=ver relatório +SIARDHomePageLabelForSIARDVersion=Versão: +SIARDHomePageLabelForSIARDPath=Caminho: +SIARDHomePageLabelForSIARDSize=Tamanho: SIARDHomePageLabelForViewerMetadataName=Nome da base de dados: SIARDHomePageLabelForViewerMetadataArchivalDate=Data do arquivo: SIARDHomePageLabelForViewerMetadataArchiver=Arquivador: @@ -250,6 +256,8 @@ SIARDHomePageTextForIngestSIARDTitle=A preparar o SIARD para navegação SIARDHomePageTextForIngestSIARDSubtitle=Este processo pode demorar algum tempo. Por favor espere pela sua conclusão. Pode verificar o progresso no quadro abaixo. SIARDHomePageDialogTitleForBrowsing=Navegação SIARDHomePageTextForIngestSuccess=Os dados do SIARD foram importados com sucesso +SIARDHomePageDialogTitleForDelete=Eliminar o ficheiro SIARD +SIARDHomePageTextForDeleteAll=Tem a certeza que deseja eliminar {startBold,}permanentemente{endBold,} o ficheiro SIARD da aplicação? Esta operação irá eliminar os metadadas e dados (se ingerido). Se está consciente das consequências confirme a ação, caso contrário cancele. SIARD=SIARD diff --git a/src/main/resources/static/desktop.html b/src/main/resources/static/desktop.html index 0280277c7..7f2514947 100644 --- a/src/main/resources/static/desktop.html +++ b/src/main/resources/static/desktop.html @@ -24,6 +24,7 @@ + diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 86e072188..cf74e2cf8 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -26,11 +26,11 @@ BrowserService - /com.databasepreservation.common.Common/browse + /com.databasepreservation.server.Server/browse ClientLogger - /com.databasepreservation.common.Common/wuilogger + /com.databasepreservation.server.Server/wuilogger