diff --git a/src/main/java/org/olat/catalog/CatalogManager.java b/src/main/java/org/olat/catalog/CatalogManager.java index 742db87f90960ca92663b7d0d5f056d39e425307..dcc979570c03220bd698b8ea470488ebc6551eb5 100644 --- a/src/main/java/org/olat/catalog/CatalogManager.java +++ b/src/main/java/org/olat/catalog/CatalogManager.java @@ -183,8 +183,7 @@ public class CatalogManager extends BasicManager implements UserDataDeletable, I StringBuilder sb = new StringBuilder(); sb.append("select cei from ").append(CatalogEntryImpl.class.getName()).append(" as cei ") .append(" inner join fetch cei.ownerGroup as ownerGroup") - .append(" where cei.type=").append(CatalogEntry.TYPE_NODE) - .append(" order by cei.name"); + .append(" where cei.type=").append(CatalogEntry.TYPE_NODE); return dbInstance.getCurrentEntityManager() .createQuery(sb.toString(), CatalogEntry.class) diff --git a/src/main/java/org/olat/catalog/ui/CatalogEntryAddController.java b/src/main/java/org/olat/catalog/ui/CatalogEntryAddController.java index 003dc0e448b9fc07cb9ea87aebb0a422de6454c4..050b4b2aa53ee59eb4764154995598b23804ac62 100644 --- a/src/main/java/org/olat/catalog/ui/CatalogEntryAddController.java +++ b/src/main/java/org/olat/catalog/ui/CatalogEntryAddController.java @@ -19,6 +19,7 @@ */ package org.olat.catalog.ui; +import java.util.Collections; import java.util.List; import org.olat.basesecurity.BaseSecurityManager; @@ -74,6 +75,7 @@ public class CatalogEntryAddController extends BasicController { catalogManager = CatalogManager.getInstance(); List<CatalogEntry> catEntryList = CatalogManager.getInstance().getAllCatalogNodes(); + Collections.sort(catEntryList, new CatalogEntryNodeComparator(getLocale())); mainVC = createVelocityContainer("catMove"); mainVC.contextPut("withTitle", new Boolean(title)); diff --git a/src/main/java/org/olat/catalog/ui/CatalogEntryNodeComparator.java b/src/main/java/org/olat/catalog/ui/CatalogEntryNodeComparator.java new file mode 100644 index 0000000000000000000000000000000000000000..e13d747e714069f8c80ef645496a68058f36a9c4 --- /dev/null +++ b/src/main/java/org/olat/catalog/ui/CatalogEntryNodeComparator.java @@ -0,0 +1,61 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.catalog.ui; + +import java.text.Collator; +import java.util.Comparator; +import java.util.Locale; + +import org.olat.catalog.CatalogEntry; + +/** + * + * Initial date: 18.02.2014<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class CatalogEntryNodeComparator implements Comparator<CatalogEntry> { + + private final Collator myCollator; + + public CatalogEntryNodeComparator(Locale locale) { + myCollator = Collator.getInstance(locale); + } + + @Override + public int compare(final CatalogEntry c1, final CatalogEntry c2) { + if(c1 == null) { + if(c2 == null) return 0; + return -1; + } + if(c2 == null) return 1; + + String t1 = c1.getName(); + String t2 = c2.getName(); + + if(t1 == null) { + if(t2 == null) return 0; + return -1; + } + if(t2 == null) return 1; + + return myCollator.compare(t1, t2); + } +} \ No newline at end of file