From 42fbfc39645660bf0ee18c718a9d6e9423e6f5e4 Mon Sep 17 00:00:00 2001 From: Yana Stamcheva Date: Tue, 7 Sep 2010 11:44:46 +0000 Subject: Patch provided by Adam Netocny, icluding some skin jar builder enhancements + javadocs. --- .../resources/ResourceManagementServiceImpl.java | 48 ++++++++++++++++- .../impl/resources/util/SkinJarBuilder.java | 62 ++++++++++++++++++---- 2 files changed, 99 insertions(+), 11 deletions(-) (limited to 'src/net/java/sip/communicator/impl') diff --git a/src/net/java/sip/communicator/impl/resources/ResourceManagementServiceImpl.java b/src/net/java/sip/communicator/impl/resources/ResourceManagementServiceImpl.java index 51cb586..7908e54 100644 --- a/src/net/java/sip/communicator/impl/resources/ResourceManagementServiceImpl.java +++ b/src/net/java/sip/communicator/impl/resources/ResourceManagementServiceImpl.java @@ -25,7 +25,7 @@ import org.osgi.framework.*; * @author Damian Minkov * @author Yana Stamcheva * @author Lubomir Marinov - * @author Adam Netocny, CircleTech, s.r.o. + * @author Adam Netocny */ public class ResourceManagementServiceImpl implements ResourceManagementService, @@ -34,13 +34,34 @@ public class ResourceManagementServiceImpl private static Logger logger = Logger.getLogger(ResourceManagementServiceImpl.class); + /** + * Resources for currently loaded ColorPack. + */ private Map colorResources; + + /** + * Currently loaded color pack. + */ private ResourcePack colorPack = null; + /** + * Resources for currently loaded ImagePack. + */ private Map imageResources; + + /** + * Currently loaded image pack. + */ private ResourcePack imagePack = null; + /** + * Resources for currently loaded LanguagePack. + */ private Map languageResources; + + /** + * Currently loaded language pack. + */ private LanguagePack languagePack = null; /** @@ -50,13 +71,34 @@ public class ResourceManagementServiceImpl */ private Locale languageLocale; + /** + * Resources for currently loaded SettingsPack. + */ private Map settingsResources; + + /** + * Currently loaded settings pack. + */ private ResourcePack settingsPack = null; + /** + * Resources for currently loaded SoundPack. + */ private Map soundResources; + + /** + * Currently loaded sound pack. + */ private ResourcePack soundPack = null; + /** + * Resources for currently loaded SkinPack. + */ private Map skinResources; + + /** + * Currently loaded SkinPack. + */ private SkinPack skinPack = null; /** @@ -125,6 +167,7 @@ public class ResourceManagementServiceImpl /** * Searches for the ResourcePack corresponding to the given * className and . + * * @param className The name of the resource class. * @param typeName The name of the type we're looking for. * For example: RESOURCE_NAME_DEFAULT_VALUE @@ -176,6 +219,8 @@ public class ResourceManagementServiceImpl /** * Handles all ServiceEvents corresponding to ResourcePack * being registered or unregistered. + * + * @param event the ServiceEvent that notified us */ public void serviceChanged(ServiceEvent event) { @@ -760,6 +805,7 @@ public class ResourceManagementServiceImpl /** * Builds a new skin bundle from the zip file content. + * * @param zipFile Zip file with skin information. * @return File for the bundle. * @throws Exception When something goes wrong. diff --git a/src/net/java/sip/communicator/impl/resources/util/SkinJarBuilder.java b/src/net/java/sip/communicator/impl/resources/util/SkinJarBuilder.java index b657fe7..a84e5ea 100644 --- a/src/net/java/sip/communicator/impl/resources/util/SkinJarBuilder.java +++ b/src/net/java/sip/communicator/impl/resources/util/SkinJarBuilder.java @@ -12,12 +12,13 @@ import java.util.zip.*; /** * Class for building of skin bundles from zip files. - * @author Adam Netocny, CircleTech, s.r.o. + * @author Adam Netocny */ public class SkinJarBuilder { /** * Creates bundle from zip file. + * * @param zip Zip file with skin contents. * @return Jar File. * @throws Exception When something goes wrong. @@ -47,6 +48,10 @@ public class SkinJarBuilder /** * Creates a copy of skinresources.jar in temp folder. + * + * @return the location of the temp file. + * @throws IOException Is thrown if the jar cannot be located or if a file + * operation goes wrong. */ private static File cpTmp() throws IOException @@ -81,9 +86,13 @@ public class SkinJarBuilder /** * Unzip given file to temp folder. + * + * @param zip ZIP File to be unzipped. + * @return temporary directory with the content of the ZIP file. + * @throws IOException Is thrown if a file operation goes wrong. */ private static File unzipIntoTmp(File zip) - throws Exception + throws IOException { File dest = File.createTempFile("zip", null); @@ -131,7 +140,11 @@ public class SkinJarBuilder } /** - * Inserts files into zip file. + * Inserts files into ZIP file. + * + * @param jar Destination ZIP file to store the data. + * @param tmpDir Folder which contains the data. + * @throws IOException Is thrown if a file operation goes wrong. */ private static void insertIntoZip(File jar, File tmpDir) throws IOException @@ -173,7 +186,11 @@ public class SkinJarBuilder } /** - * Zip the content of a folder. + * Zips the content of a folder. + * @param dir2zip Path to the directory with the data to be stored. + * @param zos Opened ZipOutputStream in which will be information + * stored. + * @throws IOException Is thrown if a file operation goes wrong. */ private static void zipDir(String dir2zip, ZipOutputStream zos) throws IOException @@ -183,7 +200,12 @@ public class SkinJarBuilder } /** - * Zip a file. + * Zips a file. + * @param directory Path to the dir with the data to be stored. + * @param base Base path for cutting paths into zip entries. + * @param zos Opened ZipOutputStream in which will be information + * stored. + * @throws IOException Is thrown if a file operation goes wrong. */ private static final void zip(File directory, File base, ZipOutputStream zos) throws IOException @@ -212,7 +234,9 @@ public class SkinJarBuilder } /** - * Deletes a dir with all subdirs. + * Deletes a directory with all its sub-directories. + * + * @param tmp the directory to be deleted */ private static void deleteDir(File tmp) { @@ -237,6 +261,10 @@ public class SkinJarBuilder /** * Tests if the content of a folder has the same structure as the skin * content. + * + * @param tmpDir Directory to be tested. + * @return true - if the directory contains valid skin, else + * false. */ private static boolean test(File tmpDir) { @@ -330,8 +358,10 @@ public class SkinJarBuilder } /** - * Moves to toplevel dir for unziped files. (e.g. /dir/info.propreties will - * be changed to /info.properties.) + * Moves to top level directory for unziped files. (e.g. + * /dir/info.propreties will be changed to /info.properties.) + * @param tmpDir Directory in which is the skin unzipped. + * @return the top level directory */ private static File findBase(File tmpDir) { @@ -357,9 +387,21 @@ public class SkinJarBuilder if (!test) { - if (list.length == 1) + if (list.length != 0) { - return list[0]; + File tmp = null; + for (File f : list) + { + if(f.isDirectory()) + { + File tmp2 = findBase(f); + if(tmp2 != null && tmp == null) + { + tmp = tmp2; + } + } + } + return tmp; } else { -- cgit v1.1