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