diff --git a/scm-webapp/src/main/java/sonia/scm/ScmContextListener.java b/scm-webapp/src/main/java/sonia/scm/ScmContextListener.java index 40fb345caa..5cb3f5dfa5 100644 --- a/scm-webapp/src/main/java/sonia/scm/ScmContextListener.java +++ b/scm-webapp/src/main/java/sonia/scm/ScmContextListener.java @@ -52,7 +52,6 @@ import sonia.scm.plugin.ExtensionProcessor; import sonia.scm.plugin.PluginWrapper; import sonia.scm.repository.RepositoryManager; import sonia.scm.schedule.Scheduler; -import sonia.scm.upgrade.UpgradeManager; import sonia.scm.user.UserManager; import sonia.scm.util.IOUtil; @@ -102,17 +101,8 @@ public class ScmContextListener extends GuiceResteasyBootstrapServletContextList } private void beforeInjectorCreation() { - upgradeIfNecessary(); } - - private void upgradeIfNecessary() { - if (!hasStartupErrors()) { - UpgradeManager upgradeHandler = new UpgradeManager(); - upgradeHandler.doUpgrade(); - } - } - private boolean hasStartupErrors() { return SCMContext.getContext().getStartupError() != null; } diff --git a/scm-webapp/src/main/java/sonia/scm/upgrade/ClientDateFormatConverter.java b/scm-webapp/src/main/java/sonia/scm/upgrade/ClientDateFormatConverter.java deleted file mode 100644 index 820de66612..0000000000 --- a/scm-webapp/src/main/java/sonia/scm/upgrade/ClientDateFormatConverter.java +++ /dev/null @@ -1,148 +0,0 @@ -/** - * Copyright (c) 2010, Sebastian Sdorra - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of SCM-Manager; nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * http://bitbucket.org/sdorra/scm-manager - * - */ - - - -package sonia.scm.upgrade; - -//~--- non-JDK imports -------------------------------------------------------- - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -//~--- JDK imports ------------------------------------------------------------ - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * - * @author Sebastian Sdorra - */ -public final class ClientDateFormatConverter -{ - - /** Field description */ - private static final String SINGLECHAR_REGEX = "(^|[^%s])[%s]($|[^%s])"; - - /** - * the logger for DateFormatConverter - */ - private static final Logger logger = - LoggerFactory.getLogger(ClientDateFormatConverter.class); - - //~--- constructors --------------------------------------------------------- - - /** - * Constructs ... - * - */ - private ClientDateFormatConverter() {} - - //~--- methods -------------------------------------------------------------- - - /** - * Documentations: - * - Extjs: http://trac.geoext.org/browser/ext/3.4.0/docs/source/Date.html - * - Moments: http://momentjs.com/docs/#/displaying/format - * - * - * @param value - * - * @return - */ - public static String extjsToMoments(String value) - { - logger.trace( - "try to convert extjs date format \"{}\" to moments date format", value); - - String result = replaceDateFormatChars(value, "d", "DD"); - - result = replaceDateFormatChars(result, "D", "ddd"); - result = replaceDateFormatChars(result, "j", "D"); - result = replaceDateFormatChars(result, "l", "dddd"); - - // no replacement found for 1-7, only 0-6 found - result = replaceDateFormatChars(result, "N", "d"); - result = replaceDateFormatChars(result, "w", "d"); - result = replaceDateFormatChars(result, "z", "DDDD"); - result = replaceDateFormatChars(result, "W", "ww"); - result = replaceDateFormatChars(result, "M", "MMM"); - result = replaceDateFormatChars(result, "F", "MMMM"); - result = replaceDateFormatChars(result, "m", "MM"); - result = replaceDateFormatChars(result, "n", "M"); - result = replaceDateFormatChars(result, "Y", "YYYY"); - result = replaceDateFormatChars(result, "o", "YYYY"); - result = replaceDateFormatChars(result, "y", "YY"); - result = replaceDateFormatChars(result, "H", "HH"); - result = replaceDateFormatChars(result, "h", "hh"); - result = replaceDateFormatChars(result, "g", "h"); - result = replaceDateFormatChars(result, "G", "H"); - result = replaceDateFormatChars(result, "i", "mm"); - result = replaceDateFormatChars(result, "s", "ss"); - result = replaceDateFormatChars(result, "O", "ZZ"); - result = replaceDateFormatChars(result, "P", "Z"); - result = replaceDateFormatChars(result, "T", "z"); - - logger.debug( - "converted extjs date format \"{}\" to moments date format \"{}\"", - value, result); - - return result; - } - - /** - * Method description - * - * - * @param value - * @param c - * @param replacement - * - * @return - */ - private static String replaceDateFormatChars(String value, String c, - String replacement) - { - Pattern p = Pattern.compile(String.format(SINGLECHAR_REGEX, c, c, c)); - StringBuffer buffer = new StringBuffer(); - Matcher m = p.matcher(value); - - while (m.find()) - { - m.appendReplacement(buffer, "$1" + replacement + "$2"); - } - - m.appendTail(buffer); - - return buffer.toString(); - } -} diff --git a/scm-webapp/src/main/java/sonia/scm/upgrade/ClientDateFormatUpgradeHandler.java b/scm-webapp/src/main/java/sonia/scm/upgrade/ClientDateFormatUpgradeHandler.java deleted file mode 100644 index 5b8301960e..0000000000 --- a/scm-webapp/src/main/java/sonia/scm/upgrade/ClientDateFormatUpgradeHandler.java +++ /dev/null @@ -1,159 +0,0 @@ -/** - * Copyright (c) 2010, Sebastian Sdorra - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of SCM-Manager; nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * http://bitbucket.org/sdorra/scm-manager - * - */ - - -package sonia.scm.upgrade; - -//~--- non-JDK imports -------------------------------------------------------- - -import com.google.common.io.Files; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import sonia.scm.SCMContext; -import sonia.scm.version.Version; - -//~--- JDK imports ------------------------------------------------------------ - -import java.io.File; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; - -/** - * - * @author Sebastian Sdorra - */ -public class ClientDateFormatUpgradeHandler extends XmlUpgradeHandler -{ - - /** - * the logger for ClientDateFormatUpgradeHandler - */ - private static final Logger logger = - LoggerFactory.getLogger(ClientDateFormatUpgradeHandler.class); - - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - * - * @param homeDirectory - * @param configDirectory - * @param oldVersion - * @param newVersion - */ - @Override - public void doUpgrade(File homeDirectory, File configDirectory, - Version oldVersion, Version newVersion) - { - if (oldVersion.isOlder("1.23")) - { - if (logger.isInfoEnabled()) - { - logger.info("data format is older than 1.23, upgrade to version {}", - SCMContext.getContext().getVersion()); - } - - updateClientDateFormat(homeDirectory, configDirectory); - } - } - - /** - * Method description - * - * - * @param document - */ - private void fixClientDateFormat(Document document) - { - NodeList nodes = document.getElementsByTagName("dateFormat"); - - if (nodes != null) - { - for (int i = 0; i < nodes.getLength(); i++) - { - Node node = nodes.item(i); - String value = node.getTextContent(); - - value = ClientDateFormatConverter.extjsToMoments(value); - node.setTextContent(value); - } - } - } - - /** - * Method description - * - * - * @param baseDirectory - * @param configDirectory - * - * @throws IOException - */ - private void updateClientDateFormat(File baseDirectory, File configDirectory) - { - File configFile = new File(configDirectory, "config.xml"); - - if (configFile.exists()) - { - try - { - - // backup config.xml - File backupDirectory = createBackupDirectory(baseDirectory, - "upgrade to version {0}"); - - Files.copy(configFile, new File(backupDirectory, "config.xml")); - - // change dateformat - - DocumentBuilder builder = - DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document document = builder.parse(configFile); - - fixClientDateFormat(document); - writeDocument(document, configFile); - } - catch (Exception ex) - { - logger.error("could not parse document", ex); - } - } - - } -} diff --git a/scm-webapp/src/main/java/sonia/scm/upgrade/TimestampUpgradeHandler.java b/scm-webapp/src/main/java/sonia/scm/upgrade/TimestampUpgradeHandler.java deleted file mode 100644 index 85328111fa..0000000000 --- a/scm-webapp/src/main/java/sonia/scm/upgrade/TimestampUpgradeHandler.java +++ /dev/null @@ -1,227 +0,0 @@ -/** - * Copyright (c) 2010, Sebastian Sdorra - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of SCM-Manager; nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * http://bitbucket.org/sdorra/scm-manager - * - */ - - -package sonia.scm.upgrade; - -//~--- non-JDK imports -------------------------------------------------------- - -import com.google.common.base.Strings; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import org.xml.sax.SAXException; - -import sonia.scm.SCMContext; -import sonia.scm.version.Version; -import sonia.scm.util.IOUtil; -import sonia.scm.util.Util; - -//~--- JDK imports ------------------------------------------------------------ - -import java.io.File; -import java.io.IOException; - -import java.text.ParseException; - -import java.util.Date; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; - -/** - * - * @author Sebastian Sdorra - */ -public class TimestampUpgradeHandler extends XmlUpgradeHandler -{ - - /** - * the logger for TimestampUpgradeHandler - */ - private static final Logger logger = - LoggerFactory.getLogger(TimestampUpgradeHandler.class); - - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - * - * @param homeDirectory - * @param configDirectory - * @param oldVersion - * @param newVersion - */ - @Override - public void doUpgrade(File homeDirectory, File configDirectory, - Version oldVersion, Version newVersion) - { - if (oldVersion.isOlder("1.2")) - { - if (logger.isInfoEnabled()) - { - logger.info("data format is older than 1.2, upgrade to version {}", - SCMContext.getContext().getVersion()); - } - - fixDate(homeDirectory, configDirectory); - } - } - - /** - * Method description - * - * - * @param value - * - * @return - */ - private String convertDate(String value) - { - if (!Strings.isNullOrEmpty(value)) - { - try - { - Date date = Util.parseDate(value); - - if (date != null) - { - value = Long.toString(date.getTime()); - } - } - catch (ParseException ex) - { - logger.warn("could not parse date", ex); - } - } - - return value; - } - - /** - * Method description - * - * - * - * @param baseDirectory - * @param configDirectory - */ - private void fixDate(File baseDirectory, File configDirectory) - { - try - { - DocumentBuilder builder = - DocumentBuilderFactory.newInstance().newDocumentBuilder(); - File backupDirectory = createBackupDirectory(baseDirectory, - "upgrade to version {0}"); - - fixDate(builder, configDirectory, backupDirectory, "users.xml"); - fixDate(builder, configDirectory, backupDirectory, "groups.xml"); - fixDate(builder, configDirectory, backupDirectory, "repositories.xml"); - } - catch (Exception ex) - { - logger.error("could not parse document", ex); - } - } - - /** - * Method description - * - * - * @param builder - * @param configDirectory - * @param backupDirectory - * @param filename - * - * @throws IOException - * @throws SAXException - * @throws TransformerConfigurationException - * @throws TransformerException - */ - private void fixDate(DocumentBuilder builder, File configDirectory, - File backupDirectory, String filename) - throws SAXException, IOException, TransformerConfigurationException, - TransformerException - { - File configFile = new File(configDirectory, filename); - File backupFile = new File(backupDirectory, filename); - - IOUtil.copy(configFile, backupFile); - - if (configFile.exists()) - { - if (logger.isInfoEnabled()) - { - logger.info("fix date elements of {}", configFile.getPath()); - } - - Document document = builder.parse(configFile); - - fixDate(document, "lastModified"); - fixDate(document, "creationDate"); - fixDate(document, "creationTime"); - writeDocument(document, configFile); - } - } - - /** - * Method description - * - * - * @param document - * @param element - */ - private void fixDate(Document document, String element) - { - NodeList nodes = document.getElementsByTagName(element); - - if (nodes != null) - { - for (int i = 0; i < nodes.getLength(); i++) - { - Node node = nodes.item(i); - String value = node.getTextContent(); - - value = convertDate(value); - node.setTextContent(value); - } - } - } -} diff --git a/scm-webapp/src/main/java/sonia/scm/upgrade/UpgradeManager.java b/scm-webapp/src/main/java/sonia/scm/upgrade/UpgradeManager.java deleted file mode 100644 index 9b34091f25..0000000000 --- a/scm-webapp/src/main/java/sonia/scm/upgrade/UpgradeManager.java +++ /dev/null @@ -1,256 +0,0 @@ -/** - * Copyright (c) 2010, Sebastian Sdorra - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of SCM-Manager; nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * http://bitbucket.org/sdorra/scm-manager - * - */ - - - -package sonia.scm.upgrade; - -//~--- non-JDK imports -------------------------------------------------------- - -import com.google.common.base.Charsets; -import com.google.common.base.Strings; -import com.google.common.collect.Lists; -import com.google.common.io.Files; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import sonia.scm.SCMContext; -import sonia.scm.version.Version; -import sonia.scm.util.IOUtil; - -//~--- JDK imports ------------------------------------------------------------ - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; - -import java.util.List; - -/** - * - * @author Sebastian Sdorra - */ -public class UpgradeManager -{ - - /** the logger for ScmUpgradeHandler */ - private static final Logger logger = - LoggerFactory.getLogger(UpgradeManager.class); - - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - * - * @throws IOException - */ - public void doUpgrade() - { - File baseDirectory = SCMContext.getContext().getBaseDirectory(); - File configDirectory = new File(baseDirectory, "config"); - File versionFile = new File(configDirectory, "version.txt"); - - if (configDirectory.exists()) - { - boolean writeVersionFile = false; - - String newVersion = SCMContext.getContext().getVersion(); - - if (versionFile.exists()) - { - - String oldVersion = getVersionString(versionFile); - - if (!Strings.isNullOrEmpty(oldVersion) &&!oldVersion.equals(newVersion)) - { - if (!newVersion.equals(oldVersion)) - { - writeVersionFile = doUpgradesForOldVersion(baseDirectory, - configDirectory, oldVersion, newVersion); - } - } - - } - else - { - writeVersionFile = doUpgradesForOldVersion(baseDirectory, - configDirectory, "1.1", newVersion); - } - - if (writeVersionFile) - { - writeVersionFile(versionFile); - logger.info("upgrade to version {} was successful", newVersion); - } - - } - else - { - - // fresh installation - IOUtil.mkdirs(configDirectory); - writeVersionFile(versionFile); - } - } - - /** - * Method description - * - * - * @return - */ - private List collectUpgradeHandlers() - { - - List upgradeHandlers = Lists.newArrayList(); - - upgradeHandlers.add(new TimestampUpgradeHandler()); - upgradeHandlers.add(new ClientDateFormatUpgradeHandler()); - - // TODO find upgrade handlers on classpath - return upgradeHandlers; - } - - /** - * Method description - * - * - * @param baseDirectory - * @param configDirectory - * @param versionString - * @param oldVersionString - * @param newVersionString - * - * @return - */ - private boolean doUpgradesForOldVersion(File baseDirectory, - File configDirectory, String oldVersionString, String newVersionString) - { - logger.info("start upgrade from version \"{}\" to \"{}\"", - oldVersionString, newVersionString); - - boolean writeVersionFile = false; - - try - { - Version oldVersion = Version.parse(oldVersionString); - Version newVersion = Version.parse(newVersionString); - - doUpgradesForOldVersion(baseDirectory, configDirectory, oldVersion, - newVersion); - writeVersionFile = true; - } - catch (Exception ex) - { - logger.error("error upgrade failed", ex); - } - - return writeVersionFile; - } - - /** - * Method description - * - * - * @param baseDirectory - * @param configDirectory - * @param version - * @param oldVersion - * @param newVersion - */ - private void doUpgradesForOldVersion(File baseDirectory, - File configDirectory, Version oldVersion, Version newVersion) - { - List upgradeHandlers = collectUpgradeHandlers(); - - for (UpgradeHandler upgradeHandler : upgradeHandlers) - { - logger.trace("call upgrade handler {}", upgradeHandler.getClass()); - upgradeHandler.doUpgrade(baseDirectory, configDirectory, oldVersion, - newVersion); - } - - } - - /** - * Method description - * - * - * @param versionFile - */ - private void writeVersionFile(File versionFile) - { - OutputStream output = null; - - try - { - output = new FileOutputStream(versionFile); - output.write(SCMContext.getContext().getVersion().getBytes()); - } - catch (IOException ex) - { - logger.error("could not write version file", ex); - } - finally - { - IOUtil.close(output); - } - } - - //~--- get methods ---------------------------------------------------------- - - /** - * Method description - * - * - * @param versionFile - * - * @return - */ - private String getVersionString(File versionFile) - { - String version = null; - - try - { - version = Files.toString(versionFile, Charsets.UTF_8).trim(); - } - catch (IOException ex) - { - logger.error("could not read version file", ex); - } - - return version; - } -} diff --git a/scm-webapp/src/main/java/sonia/scm/upgrade/XmlUpgradeHandler.java b/scm-webapp/src/main/java/sonia/scm/upgrade/XmlUpgradeHandler.java deleted file mode 100644 index b5a6793a03..0000000000 --- a/scm-webapp/src/main/java/sonia/scm/upgrade/XmlUpgradeHandler.java +++ /dev/null @@ -1,138 +0,0 @@ -/** - * Copyright (c) 2010, Sebastian Sdorra - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of SCM-Manager; nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * http://bitbucket.org/sdorra/scm-manager - * - */ - - -package sonia.scm.upgrade; - -//~--- non-JDK imports -------------------------------------------------------- - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.w3c.dom.Document; - -import sonia.scm.SCMContext; -import sonia.scm.util.IOUtil; - -//~--- JDK imports ------------------------------------------------------------ - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -import java.text.MessageFormat; -import java.text.SimpleDateFormat; - -import java.util.Date; - -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -/** - * - * @author Sebastian Sdorra - */ -public abstract class XmlUpgradeHandler implements UpgradeHandler -{ - - /** - * the logger for XmlUpgradeHandler - */ - private static final Logger logger = - LoggerFactory.getLogger(XmlUpgradeHandler.class); - - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - * - * @param baseDirectory - * @param note - * - * @return - */ - protected File createBackupDirectory(File baseDirectory, String note) - { - String date = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); - File backupDirectory = new File(baseDirectory, - "backups".concat(File.separator).concat(date)); - - IOUtil.mkdirs(backupDirectory); - - FileWriter writer = null; - - note = MessageFormat.format(note, SCMContext.getContext().getVersion()); - - try - { - writer = new FileWriter(new File(backupDirectory, "note.txt")); - writer.write(note); - } - catch (IOException ex) - { - logger.error("could not write note.txt for backup", ex); - } - finally - { - IOUtil.close(writer); - } - - return backupDirectory; - } - - /** - * Method description - * - * - * @param document - * @param configFile - * - * @throws TransformerConfigurationException - * @throws TransformerException - */ - protected void writeDocument(Document document, File configFile) - throws TransformerConfigurationException, TransformerException - { - Transformer transformer = TransformerFactory.newInstance().newTransformer(); - - transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); - transformer.setOutputProperty(OutputKeys.STANDALONE, "yes"); - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); - transformer.transform(new DOMSource(document), - new StreamResult(configFile)); - } -} diff --git a/scm-webapp/src/test/java/sonia/scm/upgrade/ClientDateFormatConverterTest.java b/scm-webapp/src/test/java/sonia/scm/upgrade/ClientDateFormatConverterTest.java deleted file mode 100644 index e5fcf23c95..0000000000 --- a/scm-webapp/src/test/java/sonia/scm/upgrade/ClientDateFormatConverterTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Copyright (c) 2010, Sebastian Sdorra - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of SCM-Manager; nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * http://bitbucket.org/sdorra/scm-manager - * - */ - - -package sonia.scm.upgrade; - -//~--- non-JDK imports -------------------------------------------------------- - -import org.junit.Test; - -import static org.junit.Assert.*; - -import static sonia.scm.upgrade.ClientDateFormatConverter.extjsToMoments; - -/** - * - * @author Sebastian Sdorra - */ -public class ClientDateFormatConverterTest -{ - - /** - * Method description - * - */ - @Test - public void testExtjsToMoments() - { - assertEquals("YYYY-MM-DD", extjsToMoments("Y-m-d")); - assertEquals("HH:mm:ss", extjsToMoments("H:i:s")); - assertEquals("YYYY-MM-DD HH:mm:ss", extjsToMoments("Y-m-d H:i:s")); - assertEquals("YYYY/MM/DD", extjsToMoments("Y/m/d")); - assertEquals("MMMM D, YYYY, h:mm a", extjsToMoments("F j, Y, g:i a")); - - // with time ago pattern - assertEquals("YYYY-MM-DD {0}", extjsToMoments("Y-m-d {0}")); - } -}