diff --git a/ccm-archetype-module/src/main/resources/archetype-resources/pom.xml b/ccm-archetype-module/src/main/resources/archetype-resources/pom.xml index becc057cf..74805f5da 100644 --- a/ccm-archetype-module/src/main/resources/archetype-resources/pom.xml +++ b/ccm-archetype-module/src/main/resources/archetype-resources/pom.xml @@ -170,7 +170,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 diff --git a/ccm-cms-archetype-contenttype/src/main/resources/archetype-resources/pom.xml b/ccm-cms-archetype-contenttype/src/main/resources/archetype-resources/pom.xml index 41ec01e05..3a1756658 100644 --- a/ccm-cms-archetype-contenttype/src/main/resources/archetype-resources/pom.xml +++ b/ccm-cms-archetype-contenttype/src/main/resources/archetype-resources/pom.xml @@ -178,7 +178,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 diff --git a/ccm-cms-types-agenda/pom.xml b/ccm-cms-types-agenda/pom.xml index 2f5542d97..98b65d99e 100644 --- a/ccm-cms-types-agenda/pom.xml +++ b/ccm-cms-types-agenda/pom.xml @@ -202,7 +202,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 diff --git a/ccm-cms-types-bookmark/pom.xml b/ccm-cms-types-bookmark/pom.xml index 2d5b98a6f..bada09610 100644 --- a/ccm-cms-types-bookmark/pom.xml +++ b/ccm-cms-types-bookmark/pom.xml @@ -201,7 +201,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 diff --git a/ccm-cms-types-decisiontree/pom.xml b/ccm-cms-types-decisiontree/pom.xml index a1a834d1a..f98d785ad 100644 --- a/ccm-cms-types-decisiontree/pom.xml +++ b/ccm-cms-types-decisiontree/pom.xml @@ -202,7 +202,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 diff --git a/ccm-cms-types-externallink/pom.xml b/ccm-cms-types-externallink/pom.xml index 02904aee0..f49ad396b 100644 --- a/ccm-cms-types-externallink/pom.xml +++ b/ccm-cms-types-externallink/pom.xml @@ -201,7 +201,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 diff --git a/ccm-cms-types-faqitem/pom.xml b/ccm-cms-types-faqitem/pom.xml index 5730bb946..d6b87cacf 100644 --- a/ccm-cms-types-faqitem/pom.xml +++ b/ccm-cms-types-faqitem/pom.xml @@ -201,7 +201,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 diff --git a/ccm-cms-types-glossaryitem/pom.xml b/ccm-cms-types-glossaryitem/pom.xml index 4b8abd1db..23209bb06 100644 --- a/ccm-cms-types-glossaryitem/pom.xml +++ b/ccm-cms-types-glossaryitem/pom.xml @@ -201,7 +201,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 diff --git a/ccm-cms-types-minutes/pom.xml b/ccm-cms-types-minutes/pom.xml index 4161eb6ef..3619de291 100644 --- a/ccm-cms-types-minutes/pom.xml +++ b/ccm-cms-types-minutes/pom.xml @@ -202,7 +202,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 diff --git a/ccm-cms/pom.xml b/ccm-cms/pom.xml index b30300f00..7663c49cd 100644 --- a/ccm-cms/pom.xml +++ b/ccm-cms/pom.xml @@ -234,7 +234,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -417,7 +417,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -504,7 +504,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -591,7 +591,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -678,7 +678,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/ContentItemPage.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/ContentItemPage.java index 5229877fd..2ad26ac34 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/ContentItemPage.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/ContentItemPage.java @@ -158,6 +158,8 @@ public class ContentItemPage extends CMSPage implements ActionListener { private final Link m_previewLink; private final GlobalNavigation m_globalNavigation; private final ContentItemContextBar m_contextBar; + + private final StringParameter selectedLanguageParam; private class ItemRequestLocal extends ContentItemRequestLocal { @@ -199,13 +201,13 @@ public class ContentItemPage extends CMSPage implements ActionListener { itemModel = new ItemSelectionModel(itemId); // Add the selected item language as parameter - final StringParameter selectedLanguage = new StringParameter( + selectedLanguageParam = new StringParameter( SELECTED_LANGUAGE); - selectedLanguage.addParameterListener(new NotNullValidationListener( + selectedLanguageParam.addParameterListener(new NotNullValidationListener( SELECTED_LANGUAGE)); - addGlobalStateParam(selectedLanguage); + addGlobalStateParam(selectedLanguageParam); selectedLanguageModel = new ParameterSingleSelectionModel<>( - selectedLanguage); + selectedLanguageParam); // Add the content type global state parameter final LongParameter contentType = new LongParameter(CONTENT_TYPE); diff --git a/ccm-core/pom.xml b/ccm-core/pom.xml index f4288a4e9..ac8328d28 100644 --- a/ccm-core/pom.xml +++ b/ccm-core/pom.xml @@ -110,7 +110,6 @@ org.bouncycastle bcprov-jdk16 - 1.46 @@ -343,7 +342,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -415,7 +414,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.10.3 + 2.10.4 true true @@ -688,7 +687,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -771,7 +770,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -855,7 +854,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -933,7 +932,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -1016,7 +1015,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -1094,7 +1093,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 diff --git a/ccm-core/src/main/java/com/arsdigita/kernel/KernelConfig.java b/ccm-core/src/main/java/com/arsdigita/kernel/KernelConfig.java index 306c19f00..0e3315d28 100644 --- a/ccm-core/src/main/java/com/arsdigita/kernel/KernelConfig.java +++ b/ccm-core/src/main/java/com/arsdigita/kernel/KernelConfig.java @@ -62,9 +62,9 @@ public final class KernelConfig { @Setting private boolean secureLoginEnabled = false; - + @Setting - private String systemEmailAddress = "libreccm@example.org"; + private String systemEmailAddress = "libreccm@example.org"; @Setting private Set supportedLanguages = new HashSet<>( @@ -73,6 +73,12 @@ public final class KernelConfig { @Setting private String defaultLanguage = "en"; + @Setting + private String exportPath = ""; + + @Setting + private String importPath = ""; + public static KernelConfig getConfig() { final ConfigurationManager confManager = CdiUtil.createCdiUtil() .findBean(ConfigurationManager.class); @@ -203,7 +209,7 @@ public final class KernelConfig { public Locale getDefaultLocale() { return new Locale(getDefaultLanguage()); } - + public String getSystemEmailAddress() { return systemEmailAddress; } @@ -211,7 +217,23 @@ public final class KernelConfig { public void setSystemEmailAddress(final String systemEmailAddress) { this.systemEmailAddress = systemEmailAddress; } - + + public String getExportPath() { + return exportPath; + } + + public void setExportPath(final String exportPath) { + this.exportPath = exportPath; + } + + public String getImportPath() { + return importPath; + } + + public void setImportPath(final String importPath) { + this.importPath = importPath; + } + @Override public int hashCode() { int hash = 7; @@ -225,6 +247,8 @@ public final class KernelConfig { hash = 61 * hash + Objects.hashCode(supportedLanguages); hash = 61 * hash + Objects.hashCode(defaultLanguage); hash = 61 * hash + Objects.hashCode(systemEmailAddress); + hash = 61 * hash + Objects.hashCode(exportPath); + hash = 61 * hash + Objects.hashCode(importPath); return hash; } @@ -269,9 +293,18 @@ public final class KernelConfig { if (!Objects.equals(defaultLanguage, other.getDefaultLanguage())) { return false; } - - return Objects.equals(systemEmailAddress, - other.getSystemEmailAddress()); + + if (!Objects.equals(systemEmailAddress, + other.getSystemEmailAddress())) { + return false; + } + + if (!Objects.equals(exportPath, + other.getExportPath())) { + return false; + } + + return Objects.equals(importPath, other.getImportPath()); } @Override @@ -295,7 +328,9 @@ public final class KernelConfig { + "secureLoginEnabled = %b, " + "supportedLanguages = { \"%s\" }, " + "defaultLanguage = \"%s\", " - + "systemEmailAddress = \"%s\"" + + "systemEmailAddress = \"%s\", " + + "exportPath = \"%s\", " + + "importPath = \"%s\"" + " }", super.toString(), debugEnabled, @@ -308,7 +343,9 @@ public final class KernelConfig { //supportedLanguages == null ? "" : supportedLanguages.stream().collect(Collectors.joining(", ")), languages, defaultLanguage, - systemEmailAddress); + systemEmailAddress, + exportPath, + importPath); } } diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java index 831b233be..4c0b2a343 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java @@ -32,6 +32,7 @@ import com.arsdigita.ui.UserBanner; import com.arsdigita.ui.admin.applications.ApplicationsTab; import com.arsdigita.ui.admin.categories.CategoriesTab; import com.arsdigita.ui.admin.configuration.ConfigurationTab; +import com.arsdigita.ui.admin.importexport.ImportExportTab; import com.arsdigita.web.BaseApplicationServlet; import com.arsdigita.web.LoginSignal; import com.arsdigita.xml.Document; @@ -139,15 +140,21 @@ public class AdminServlet extends BaseApplicationServlet { ADMIN_BUNDLE)), new WorkflowAdminTab()); + tabbedPane.addTab( + new Label(new GlobalizedMessage("ui.admin.tab.importexport.title", + ADMIN_BUNDLE)), + new ImportExportTab()); + tabbedPane.addTab( new Label(new GlobalizedMessage("ui.admin.tab.sysinfo.title", ADMIN_BUNDLE)), new SystemInformationTab()); - + final ServletContext servletContext = getServletContext(); - final String develMode = servletContext.getInitParameter("ccm.develmode"); + final String develMode = servletContext + .getInitParameter("ccm.develmode"); if (develMode != null && "true".equals(develMode.toLowerCase())) { - + } //page.add(new Label("admin")); diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/importexport/ExportSection.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/importexport/ExportSection.java new file mode 100644 index 000000000..a2552faad --- /dev/null +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/importexport/ExportSection.java @@ -0,0 +1,182 @@ +/* + * Copyright (C) 2017 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package com.arsdigita.ui.admin.importexport; + +import com.arsdigita.bebop.BoxPanel; +import com.arsdigita.bebop.Form; +import com.arsdigita.bebop.FormProcessException; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.SaveCancelSection; +import com.arsdigita.bebop.Text; +import com.arsdigita.bebop.event.FormProcessListener; +import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.bebop.form.Submit; +import com.arsdigita.globalization.GlobalizedMessage; +import com.arsdigita.ui.admin.AdminUiConstants; + +import org.libreccm.cdi.utils.CdiUtil; + +import java.util.ArrayList; + +/** + * + * @author Jens Pelzetter + */ +public class ExportSection extends BoxPanel { + + public ExportSection() { + super(BoxPanel.VERTICAL); + + add(new ExportForm()); + add(new StatusLabel()); + add(new ReportForm()); + + } + + private class ExportForm extends Form implements FormProcessListener { + + private final SaveCancelSection saveCancelSection; + + public ExportForm() { + super("exportForm"); + + // This placeholder will be replaced with a list of the available + // exporters and checkboxes to select the exporters to use. + add(new Text("export section placeholder")); + + saveCancelSection = new SaveCancelSection(); + saveCancelSection.getSaveButton().setButtonLabel( + new GlobalizedMessage("ui.admin.importexport.export.start", + AdminUiConstants.ADMIN_BUNDLE)); + add(saveCancelSection); + addProcessListener(this); + } + + @Override + public boolean isVisible(final PageState state) { + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final ImportExportMonitor monitor = cdiUtil + .findBean(ImportExportMonitor.class); + return !monitor.isLocked(); + } + + @Override + public void process(final FormSectionEvent event) + throws FormProcessException { + + final PageState state = event.getPageState(); + if (saveCancelSection.getSaveButton().isSelected(state)) { + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final ImportExportController controller = cdiUtil + .findBean(ImportExportController.class); + controller.export(new ArrayList<>()); + } + } + + } + + private class StatusLabel extends Label { + + public StatusLabel() { + super(event -> { + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final ImportExportMonitor monitor = cdiUtil + .findBean(ImportExportMonitor.class); + final Label target = (Label) event.getTarget(); + if (monitor.isExportActive()) { + target.setLabel(new GlobalizedMessage( + "ui.admin.importexport.export.status.export_active", + AdminUiConstants.ADMIN_BUNDLE)); + } else if (monitor.isImportActive()) { + target.setLabel(new GlobalizedMessage( + "ui.admin.importexport.export.status.import_active", + AdminUiConstants.ADMIN_BUNDLE)); + } else { + target.setLabel(new GlobalizedMessage( + "ui.admin.importexport.export.status.locked", + AdminUiConstants.ADMIN_BUNDLE)); + } + }); + } + + @Override + public boolean isVisible(final PageState state) { + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final ImportExportMonitor monitor = cdiUtil + .findBean(ImportExportMonitor.class); + return monitor.isLocked(); + } + + } + + private class ReportForm extends Form { + + public ReportForm() { + + super("exportReportForm", new BoxPanel(BoxPanel.VERTICAL)); + + final Label title = new Label(event -> { + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final ImportExportMonitor monitor = cdiUtil + .findBean(ImportExportMonitor.class); + + final Label target = (Label) event.getTarget(); + + if (monitor.isExportActive()) { + target.setLabel(new GlobalizedMessage( + "ui.admin.importexport.export.current_status", + AdminUiConstants.ADMIN_BUNDLE)); + } else if (monitor.isExportReportAvailable()) { + target.setLabel(new GlobalizedMessage( + "ui.admin.importexport.export.report", + AdminUiConstants.ADMIN_BUNDLE)); + } + }); + add(title); + + final Text text = new Text(event -> { + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final ImportExportMonitor monitor = cdiUtil + .findBean(ImportExportMonitor.class); + final Text target = (Text) event.getTarget(); + target.setText(monitor.getReport().toString()); + }); + text.setClassAttr("preformatted-text"); + add(text); + + add(new Submit(new GlobalizedMessage( + "ui.admin.importexport.report.update", + AdminUiConstants.ADMIN_BUNDLE))); + } + + @Override + public boolean isVisible(final PageState state) { + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final ImportExportMonitor monitor = cdiUtil + .findBean(ImportExportMonitor.class); + + return monitor.isExportActive() + || monitor.isExportReportAvailable(); + } + + } + + +} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/importexport/ImportExportController.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/importexport/ImportExportController.java new file mode 100644 index 000000000..4d3da4329 --- /dev/null +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/importexport/ImportExportController.java @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2017 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package com.arsdigita.ui.admin.importexport; + +import com.arsdigita.kernel.KernelConfig; + +import org.libreccm.configuration.ConfigurationManager; +import org.libreccm.core.UnexpectedErrorException; +import org.libreccm.files.CcmFiles; +import org.libreccm.files.FileAccessException; +import org.libreccm.files.FileDoesNotExistException; +import org.libreccm.files.InsufficientPermissionsException; + +import java.util.Date; +import java.util.List; + +import javax.ejb.Asynchronous; +import javax.ejb.Stateless; +import javax.inject.Inject; + +/** + * + * @author Jens Pelzetter + */ +@Stateless +public class ImportExportController { + + @Inject + private ConfigurationManager confManager; + + @Inject + private ImportExportMonitor monitor; + + @Inject + private CcmFiles ccmFiles; + + /** + * Return the fully qualified class names for all available exporters. + * + * @return + */ + public List getAvailableExporters() { + // Note: Return value may needs to be adjusted. Possibly we need a + // data structure which contains some more information like a + // localised label for the exporters etc. + throw new UnsupportedOperationException("Not implemented yet."); + } + + /** + * Create an export into the directory configured by + * {@link KernelConfig#exportPath} using the provided exporters. + * + * @param exporters The exporters to use. + */ + @Asynchronous + public void export(final List exporters) { + monitor.startExport(); + + final long start = System.currentTimeMillis(); + + while (System.currentTimeMillis() < start + 60 * 1000) { + try { + Thread.sleep(3 * 1000); + } catch (InterruptedException ex) { + throw new UnexpectedErrorException(ex); + } + monitor.getReport().append(String.format("...%tF % getAvailableImportFiles() { + + final KernelConfig kernelConfig = confManager + .findConfiguration(KernelConfig.class); + final String importPath = kernelConfig.getImportPath(); + + try { + return ccmFiles.listFiles(importPath); + } catch (FileAccessException + | FileDoesNotExistException + | InsufficientPermissionsException ex) { + throw new UnexpectedErrorException(ex); + } + } + + public void importFiles(final List filesToImport) { + monitor.startImport(); + + // ToDol Import code here + + monitor.finishImport(); + } + +} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/importexport/ImportExportMonitor.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/importexport/ImportExportMonitor.java new file mode 100644 index 000000000..cb2253498 --- /dev/null +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/importexport/ImportExportMonitor.java @@ -0,0 +1,155 @@ +/* + * Copyright (C) 2017 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package com.arsdigita.ui.admin.importexport; + +import java.util.Date; +import java.util.UUID; + +import javax.enterprise.context.ApplicationScoped; + +/** + * + * + * @author Jens Pelzetter + */ +@ApplicationScoped +public class ImportExportMonitor { + + /** + * Indicates that an export process is running. + */ + private boolean exportActive = false; + + /** + * Indicates that an import process is running. + */ + private boolean importActive = false; + + private boolean exportReportAvailable = false; + + private boolean importReportAvailable = false; + + /** + * A UUID to identify to the import/export process. + */ + private String importExportProcessUuid; + + /** + * A {@link StringBuffer} for creating a report of the import/export + * process. The report of the last import/export process will be stored + * until another import/export process is started or the application is + * restarted. + */ + private StringBuffer report; + + public boolean isExportActive() { + return exportActive; + } + + public boolean isImportActive() { + return importActive; + } + + /** + * Returns {@code true} if either an import process or an export process is + * active. + * + * @return {@code true} if an import or export process is active. + */ + public boolean isLocked() { + return exportActive || importActive; + } + + public boolean isExportReportAvailable() { + return exportReportAvailable; + } + + public boolean isImportReportAvailable() { + return importReportAvailable; + } + + public void startExport() { + if (exportActive) { + throw new IllegalStateException( + "Can't start a new export process " + + "because there is already an export process running"); + } + + if (importActive) { + throw new IllegalStateException( + "Can't start a export process " + + "because there is already an import process running"); + } + + exportActive = true; + importExportProcessUuid = UUID.randomUUID().toString(); + report = new StringBuffer(); + report.append(String + .format("Lock for export process %s accquired at %tF %Jens Pelzetter + */ +public class ImportExportTab extends LayoutPanel { + + private List sections; + private final java.util.List components = new ArrayList<>(); + private final java.util.List de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -377,7 +377,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -459,7 +459,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -541,7 +541,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -623,7 +623,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 diff --git a/ccm-shortcuts/pom.xml b/ccm-shortcuts/pom.xml index a352879b0..42b6753e9 100644 --- a/ccm-shortcuts/pom.xml +++ b/ccm-shortcuts/pom.xml @@ -226,7 +226,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -413,7 +413,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -500,7 +500,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -590,7 +590,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 @@ -677,7 +677,7 @@ de.jpdigital - hibernate5-ddl-maven-plugin + hibernate50-ddl-maven-plugin h2 diff --git a/ccm-testutils/src/main/java/org/libreccm/testutils/DatasetsVerifier.java b/ccm-testutils/src/main/java/org/libreccm/testutils/DatasetsVerifier.java index c2ee911f7..800ed55d7 100644 --- a/ccm-testutils/src/main/java/org/libreccm/testutils/DatasetsVerifier.java +++ b/ccm-testutils/src/main/java/org/libreccm/testutils/DatasetsVerifier.java @@ -107,16 +107,16 @@ public class DatasetsVerifier { //try-with-resources block to ensure that the connection is closed. final StringBuffer buffer = new StringBuffer("jdbc:h2:mem:testdatabase"); //Create schema if necssary - if (getSchemas().length > 0) { - buffer.append(";INIT="); - for (final String schema : getSchemas()) { - if (buffer.length() > 0) { - buffer.append("\\;"); - } - buffer.append(String.format("CREATE SCHEMA IF NOT EXISTS %s", - schema)); - } - } +// if (getSchemas().length > 0) { +// buffer.append(";INIT="); +// for (final String schema : getSchemas()) { +// if (buffer.length() > 0) { +// buffer.append("\\;"); +// } +// buffer.append(String.format("CREATE SCHEMA IF NOT EXISTS %s", +// schema)); +// } +// } final String connectionStr = buffer.toString(); try (final Connection connection = DriverManager.getConnection( connectionStr, "sa", "")) { diff --git a/ccm-theme-foundry/src/main/resources/themes/foundry/foundry/styles/admin.css b/ccm-theme-foundry/src/main/resources/themes/foundry/foundry/styles/admin.css index 3e93fdaae..dcef6009e 100644 --- a/ccm-theme-foundry/src/main/resources/themes/foundry/foundry/styles/admin.css +++ b/ccm-theme-foundry/src/main/resources/themes/foundry/foundry/styles/admin.css @@ -1946,3 +1946,7 @@ span#quickLinksCascade { text-align: left; } + +.preformatted-text { + white-space: pre; +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 1ffc7c577..27a31590b 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ ccm-bundle-devel-wildfly ccm-bundle-devel-wildfly-swarm ccm-xafilesystemadapter - + true @@ -193,8 +193,8 @@ de.jpdigital - hibernate5-ddl-maven-plugin - 1.0.1-hibernate-5.2.4.Final + hibernate50-ddl-maven-plugin + 2.0.2-SNAPSHOT org.jacoco @@ -221,6 +221,12 @@ vaadin-maven-plugin 8.0.5 + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.10.4 + @@ -493,6 +499,12 @@ oro 2.0.8 + + + org.bouncycastle + bcprov-jdk16 + 1.46 + poi