diff --git a/source/java/org/alfresco/web/bean/content/CreateContentWizard.java b/source/java/org/alfresco/web/bean/content/CreateContentWizard.java index c943b8166e..dd11533c0d 100644 --- a/source/java/org/alfresco/web/bean/content/CreateContentWizard.java +++ b/source/java/org/alfresco/web/bean/content/CreateContentWizard.java @@ -17,7 +17,7 @@ package org.alfresco.web.bean.content; import java.util.ArrayList; -import java.util.Iterator; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.ResourceBundle; @@ -165,14 +165,15 @@ public class CreateContentWizard extends BaseContentWizard public List getCreateTemplateTypes() { - List ttl = TemplatingService.getInstance().getTemplateTypes(); + Collection ttl = TemplatingService.getInstance().getTemplateTypes(); List sil = new ArrayList(ttl.size()); - Iterator it = ttl.iterator(); - while (it.hasNext()) + for (TemplateType tt : ttl) { - TemplateType tt = (TemplateType)it.next(); sil.add(new SelectItem(tt.getName(), tt.getName())); } + + QuickSort sorter = new QuickSort(sil, "label", true, IDataContainer.SORT_CASEINSENSITIVE); + sorter.sort(); return sil; } diff --git a/source/java/org/alfresco/web/templating/TemplatingService.java b/source/java/org/alfresco/web/templating/TemplatingService.java index d9aa2d14da..14315dfb3a 100644 --- a/source/java/org/alfresco/web/templating/TemplatingService.java +++ b/source/java/org/alfresco/web/templating/TemplatingService.java @@ -17,9 +17,7 @@ package org.alfresco.web.templating; import java.io.*; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; +import java.util.*; import javax.xml.parsers.*; @@ -110,10 +108,18 @@ public final class TemplatingService final ObjectInputStream in = new ObjectInputStream(contentIn); try { - final List tt = (List)in.readObject(); - for (TemplateType t : tt) + while (true) { - TemplatingService.INSTANCE.registerTemplateType(t); + try + { + final TemplateType tt = (TemplateType)in.readObject(); + TemplatingService.INSTANCE.registerTemplateType(tt); + } + catch (EOFException eof) + { + break; + } + } in.close(); } @@ -135,7 +141,10 @@ public final class TemplatingService if (!CONFIG_FILE.exists()) CONFIG_FILE.createNewFile(); final ObjectOutputStream out = new ObjectOutputStream(contentOut); - out.writeObject(TemplatingService.INSTANCE.getTemplateTypes()); + for (TemplateType tt : TemplatingService.INSTANCE.getTemplateTypes()) + { + out.writeObject(tt); + } out.close(); } } @@ -152,8 +161,8 @@ public final class TemplatingService private static final Log LOGGER = LogFactory.getLog(TemplatingService.class); private static TemplatingService INSTANCE; - private ArrayList templateTypes = - new ArrayList(); + private HashMap templateTypes = + new HashMap(); private final ContentService contentService; private final NodeService nodeService; private final FileFolderService fileFolderService; @@ -192,32 +201,26 @@ public final class TemplatingService catch (Throwable t) { LOGGER.error(t); + t.printStackTrace(); } } return TemplatingService.INSTANCE; } - public List getTemplateTypes() + public Collection getTemplateTypes() { - return this.templateTypes; + return this.templateTypes.values(); } public TemplateType getTemplateType(final String name) { - final Iterator it = this.templateTypes.iterator(); - while (it.hasNext()) - { - final TemplateType tt = (TemplateType)it.next(); - if (tt.getName().equals(name)) - return tt; - } - return null; + return this.templateTypes.get(name); } public void registerTemplateType(final TemplateType tt) { - this.templateTypes.add(tt); + this.templateTypes.put(tt.getName(), tt); try { Configuration.save(); diff --git a/source/java/org/alfresco/web/templating/xforms/TemplateTypeImpl.java b/source/java/org/alfresco/web/templating/xforms/TemplateTypeImpl.java index 3603a67753..2eac4f6a81 100644 --- a/source/java/org/alfresco/web/templating/xforms/TemplateTypeImpl.java +++ b/source/java/org/alfresco/web/templating/xforms/TemplateTypeImpl.java @@ -197,4 +197,9 @@ public class TemplateTypeImpl { return this.outputMethods; } + + public int hashCode() + { + return this.getName().hashCode(); + } } \ No newline at end of file