summaryrefslogtreecommitdiff
path: root/qadevOOo/runner/convwatch/FilenameHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'qadevOOo/runner/convwatch/FilenameHelper.java')
-rw-r--r--qadevOOo/runner/convwatch/FilenameHelper.java398
1 files changed, 398 insertions, 0 deletions
diff --git a/qadevOOo/runner/convwatch/FilenameHelper.java b/qadevOOo/runner/convwatch/FilenameHelper.java
new file mode 100644
index 000000000000..3d49703dc995
--- /dev/null
+++ b/qadevOOo/runner/convwatch/FilenameHelper.java
@@ -0,0 +1,398 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+/**
+ * Helper class to hold a Filename or a FileURL
+ * Something like File in Java,
+ * with some more extensions direct to ConvWatch and it's name conventions
+ *
+ *
+ */
+package convwatch;
+
+import helper.URLHelper;
+import convwatch.FileHelper;
+import helper.StringHelper;
+import util.utils;
+
+interface Filenamer
+{
+ public String getSuffix();
+ public String getFileURL();
+ public String getAbsoluteSystemFilename();
+ public String getFilename();
+ public String getSystemPath();
+}
+
+// -----------------------------------------------------------------------------
+
+abstract class FilenameHelper_impl implements Filenamer
+{
+ String fs; // file separator like '/'
+ String m_sPath;
+ String m_sFilename;
+ String m_sSuffix;
+ int m_nNumber = 0;
+
+ public String getNumber()
+ {
+ return StringHelper.createValueString(m_nNumber, 4);
+ }
+ public void setNumber(int _n)
+ {
+ m_nNumber = _n;
+ }
+ void initMember()
+ {
+ fs = System.getProperty("file.separator");
+ }
+
+ /**
+ * initialise a FilenameHelper_impl with a complete filename.
+ * if the filename starts with 'file:///' it is interpret as a file URL
+ *
+ */
+ public FilenameHelper_impl()
+ {
+ initMember();
+ }
+
+ public void setCompleteFilename(String _sFilename)
+ {
+ if (_sFilename.startsWith("file:///"))
+ {
+ _sFilename = FileHelper.getSystemPathFromFileURL(_sFilename);
+ }
+ _sFilename = utils.replaceAll13(_sFilename, "\\\\", "/");
+
+ String sPath = checkPath(FileHelper.getPath(_sFilename));
+ String sFilenameWithSuffix = checkFilename(FileHelper.getBasename(_sFilename));
+ String sSuffix = splitSuffix(sFilenameWithSuffix);
+
+ m_sPath = sPath;
+ m_sFilename = FileHelper.getNameNoSuffix(sFilenameWithSuffix);
+ m_sSuffix = sSuffix;
+ }
+
+ /**
+ * initialise a FilenameHelper_impl with a path a name and a suffix separately
+ */
+ public FilenameHelper_impl(String _sPath, String _sName, String _sSuffix)
+ {
+ initMember();
+ _sPath = utils.replaceAll13(_sPath, "\\\\", "/");
+
+ String sPath = checkPath(_sPath);
+ String sFilename = checkFilename(_sName);
+ String sSuffix = checkSuffix(_sSuffix);
+
+ m_sPath = sPath;
+ m_sFilename = sFilename;
+ m_sSuffix = sSuffix;
+ }
+
+ /**
+ * @return the current path as a OOo path URL
+ */
+ public String getFileURL()
+ {
+ String sSystemPath = createAbsoluteFilename();
+ String sFileURL = URLHelper.getFileURLFromSystemPath(sSystemPath);
+ return sFileURL;
+ }
+
+
+ /**
+ * @return the current path as a system path
+ */
+ public String getAbsoluteSystemFilename()
+ {
+ String sSystemFilename = createAbsoluteFilename();
+ sSystemFilename = utils.replaceAll13(sSystemFilename, "/", fs);
+ return sSystemFilename;
+ }
+
+ /**
+ * @return the filename without it's suffix
+ */
+ public String getName()
+ {
+ return m_sFilename;
+ }
+ /**
+ * set only the filename, maybe it's is only a directory.
+ */
+ public void setName(String _sName)
+ {
+ m_sFilename = _sName;
+ }
+ public void setPath(String _sName)
+ {
+ m_sPath = _sName;
+ }
+
+ /**
+ * @return a created name
+ */
+ abstract public String buildName();
+ // {
+ // return getName();
+ // }
+
+ /**
+ * @return the complete filename with it's suffix
+ */
+ public String getFilename()
+ {
+ return buildName() + "." + getSuffix();
+ }
+
+ /**
+ * @return the path as system path
+ */
+ public String getSystemPath()
+ {
+ String sSystemPath = m_sPath;
+ sSystemPath = utils.replaceAll13(sSystemPath, "/", fs);
+ return sSystemPath;
+ }
+ /**
+ * @return true, if current SystemPath is a directory
+ */
+ public boolean isDirectory()
+ {
+ return FileHelper.isDir(getSystemPath());
+ }
+
+ /**
+ * @return true, if the file really exist.
+ */
+ public boolean exists()
+ {
+ return FileHelper.exists(createAbsoluteFilename());
+ }
+
+ /**
+ * @return the current suffix
+ */
+ public String getSuffix()
+ {
+ return m_sSuffix;
+ }
+ /**
+ * @return the complete name. Without convert the path separator!
+ */
+ String createAbsoluteFilename()
+ {
+ return m_sPath + fs + getFilename();
+ }
+
+ /*
+ * remove follows 'file separators'
+ */
+ String checkPath(String _sPath)
+ {
+ String sPath;
+ if (_sPath.endsWith("/") || _sPath.endsWith("\\"))
+ {
+ sPath = _sPath.substring(0, _sPath.length() - 1);
+ }
+ else
+ {
+ sPath = _sPath;
+ }
+ return sPath;
+ }
+
+ String checkFilename(String _sFilename)
+ {
+ String sFilename;
+ if (_sFilename.startsWith("/") || _sFilename.startsWith("\\"))
+ {
+ sFilename = _sFilename.substring(1);
+ }
+ else
+ {
+ sFilename = _sFilename;
+ }
+ return sFilename;
+ }
+
+ String checkSuffix(String _sSuffix)
+ {
+ String sSuffix;
+ if (_sSuffix.startsWith("."))
+ {
+ sSuffix = _sSuffix.substring(1);
+ }
+ else
+ {
+ sSuffix = _sSuffix;
+ }
+ return sSuffix;
+ }
+
+ String splitSuffix(String _sName)
+ {
+ String sSuffix = FileHelper.getSuffix(_sName);
+ return checkSuffix(sSuffix);
+ }
+
+ public boolean equals(FilenameHelper_impl _aOtherFN)
+ {
+ String sPath = createAbsoluteFilename();
+ String sPathOther = _aOtherFN.createAbsoluteFilename();
+ if (sPath.equals(sPathOther))
+ {
+ return true;
+ }
+ return false;
+ }
+
+}
+
+/**
+ * Original filename
+ */
+class OriginalFilename extends FilenameHelper_impl
+{
+ public String buildName()
+ {
+ return getName();
+ }
+
+ public OriginalFilename(){}
+ public OriginalFilename(String _path, String _filename, String _ext) { super(_path, _filename, _ext);}
+}
+
+/**
+ * Reference from original
+ */
+class OriginalReferenceFilename extends FilenameHelper_impl
+{
+ public String getSuffix()
+ {
+ return "prn";
+ }
+ public String buildName()
+ {
+ return getName();
+ }
+ public OriginalReferenceFilename(){}
+ public OriginalReferenceFilename(String _path, String _filename, String _ext) { super(_path, _filename, _ext);}
+}
+
+/**
+ * picture from reference from original
+ */
+class OriginalReferencePictureFilename extends FilenameHelper_impl
+{
+ public String getSuffix()
+ {
+ return "jpg";
+ }
+ public String buildName()
+ {
+ return getName() + "-" + getNumber() + "-ref";
+ }
+ public String getBuildString()
+ {
+ return getName() + "-" + "%04d" + "-ref";
+ }
+
+ public OriginalReferencePictureFilename(){}
+ public OriginalReferencePictureFilename(String _path, String _filename, String _ext) { super(_path, _filename, _ext);}
+}
+
+/**
+ * Reference from OpenOffice.org
+ */
+class CurrentReferenceFilename extends FilenameHelper_impl
+{
+ public String getSuffix()
+ {
+ return "ps";
+ }
+ public String buildName()
+ {
+ return getName();
+ }
+
+ public CurrentReferenceFilename(){}
+ public CurrentReferenceFilename(String _path, String _filename, String _ext) { super(_path, _filename, _ext);}
+}
+
+/**
+ * picture from reference from OpenOffice.org
+ */
+class CurrentReferencePictureFilename extends FilenameHelper_impl
+{
+ public String getSuffix()
+ {
+ return "jpg";
+ }
+ public String buildName()
+ {
+ return getName() + "-" + getNumber() + "-new-ref";
+ }
+ public String getBuildString()
+ {
+ return getName() + "-" + "%04d" + "-new-ref";
+ }
+
+ public CurrentReferencePictureFilename(){}
+ public CurrentReferencePictureFilename(String _path, String _filename, String _ext) { super(_path, _filename, _ext);}
+}
+
+
+public class FilenameHelper
+{
+
+ public static void main(String[] args)
+ {
+ OriginalReferenceFilename d = new OriginalReferenceFilename();
+ d.setCompleteFilename("c:\\dir1\\dir2\\name.ext");
+ System.out.println("Suffix: " + d.getSuffix());
+ System.out.println("Path: " + d.getSystemPath());
+ System.out.println("Absolute system path filename: " + d.getAbsoluteSystemFilename());
+ System.out.println("URL: " + d.getFileURL());
+ System.out.println("Filename: " + d.getFilename());
+
+ OriginalReferenceFilename a = new OriginalReferenceFilename("/dir1/dir2/", "name",".ext");
+ OriginalReferenceFilename a1 = new OriginalReferenceFilename("/dir1/dir2","name.ext","");
+ OriginalReferenceFilename a2 = new OriginalReferenceFilename("/dir1/dir2","/name.ext","");
+ OriginalReferenceFilename a3 = new OriginalReferenceFilename("/dir1/dir2","/name",".ext");
+ OriginalReferenceFilename a4 = new OriginalReferenceFilename("/dir1/dir2","name","ext");
+
+
+ // OriginalReferenceFilename b = new OriginalReferenceFilename("c:/dir1/dir2/name.ext");
+ // OriginalReferenceFilename c = new OriginalReferenceFilename("file:///dir1/dir2/name.ext");
+ // OriginalReferenceFilename e = new OriginalReferenceFilename("c:\\dir1\\dir2\\name");
+ // OriginalReferenceFilename f = new OriginalReferenceFilename("c:\\dir1\\dir2");
+ // OriginalReferenceFilename g = new OriginalReferenceFilename("c:\\dir1\\dir2\\");
+ }
+}