PublicPersonalProfile: Verwaltungsoberfläche für die möglichen Menüpunkte fertiggestellt

git-svn-id: https://svn.libreccm.org/ccm/trunk@1065 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-08-20 07:04:43 +00:00
parent 5a9c50928f
commit 287d5a4321
1 changed files with 73 additions and 61 deletions

View File

@ -1,6 +1,5 @@
package com.arsdigita.cms.contenttypes; package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.contenttypes.PublicPersonalProfileNavItem;
import com.arsdigita.domain.DomainCollection; import com.arsdigita.domain.DomainCollection;
import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.Filter; import com.arsdigita.persistence.Filter;
@ -104,80 +103,93 @@ public class PublicPersonalProfileNavItemCollection extends DomainCollection {
} }
public void swapWithNext(final PublicPersonalProfileNavItem navItem) { public void swapWithNext(final PublicPersonalProfileNavItem navItem) {
final int order1 = navItem.getOrder(); final PublicPersonalProfileNavItemCollection collection =
final int order2 = order1 + 1;
final PublicPersonalProfileNavItemCollection navItems1 =
new PublicPersonalProfileNavItemCollection(); new PublicPersonalProfileNavItemCollection();
navItems1.addFilter(String.format("navItemOrder = %d", order1)); collection.addOrder("navItemOrder, key, lang, label");
final PublicPersonalProfileNavItemCollection navItems2 = final List<List<PublicPersonalProfileNavItem>> navItems =
new PublicPersonalProfileNavItemCollection(); generateNavItemList(
navItems2.addFilter(String.format("navItemOrder = %d", order2)); new PublicPersonalProfileNavItemCollection());
final List<PublicPersonalProfileNavItem> navItemsList1 = int i = 0;
new ArrayList<PublicPersonalProfileNavItem>(); for (i = 0; i < navItems.size(); i++) {
final List<PublicPersonalProfileNavItem> navItemsList2 = if (navItem.getKey().equals(navItems.get(i).get(0).getKey())) {
new ArrayList<PublicPersonalProfileNavItem>(); break;
}
while (navItems1.next()) {
navItemsList1.add(navItems1.getNavItem());
}
navItems1.rewind();
while (navItems2.next()) {
navItemsList2.add(navItems2.getNavItem());
}
navItems2.rewind();
navItems1.close();
navItems2.close();
for (PublicPersonalProfileNavItem item : navItemsList1) {
item.setOrder(order2);
} }
for (PublicPersonalProfileNavItem item : navItemsList2) { if (i == navItems.size() - 1) {
item.setOrder(order1); throw new IllegalArgumentException(
"Provided navItem instance is the last one, therefore there is no next item to switch with.");
}
final int navItemOrder = navItem.getOrder();
final int nextOrder = navItems.get(i + 1).get(0).getOrder();
for(PublicPersonalProfileNavItem item : navItems.get(i)) {
item.setOrder(nextOrder);
}
for(PublicPersonalProfileNavItem item : navItems.get(i + 1)) {
item.setOrder(navItemOrder);
} }
} }
public void swapWithPrevious(final PublicPersonalProfileNavItem navItem) { public void swapWithPrevious(final PublicPersonalProfileNavItem navItem) {
final int order1 = navItem.getOrder(); final PublicPersonalProfileNavItemCollection collection =
final int order2 = order1 - 1;
final PublicPersonalProfileNavItemCollection navItems1 =
new PublicPersonalProfileNavItemCollection(); new PublicPersonalProfileNavItemCollection();
navItems1.addFilter(String.format("navItemOrder = %d", order1)); collection.addOrder("key");
final PublicPersonalProfileNavItemCollection navItems2 = final List<List<PublicPersonalProfileNavItem>> navItems =
new PublicPersonalProfileNavItemCollection(); generateNavItemList(
navItems2.addFilter(String.format("navItemOrder = %d", order2)); new PublicPersonalProfileNavItemCollection());
final List<PublicPersonalProfileNavItem> navItemsList1 = int i = 0;
new ArrayList<PublicPersonalProfileNavItem>(); for (i = 0; i < navItems.size(); i++) {
final List<PublicPersonalProfileNavItem> navItemsList2 = if (navItem.getKey().equals(navItems.get(i).get(0).getKey())) {
new ArrayList<PublicPersonalProfileNavItem>(); break;
}
while (navItems1.next()) {
navItemsList1.add(navItems1.getNavItem());
}
navItems1.rewind();
while (navItems2.next()) {
navItemsList2.add(navItems2.getNavItem());
}
navItems2.rewind();
navItems1.close();
navItems2.close();
for (PublicPersonalProfileNavItem item : navItemsList1) {
item.setOrder(order2);
} }
for (PublicPersonalProfileNavItem item : navItemsList2) { if (i == 0) {
item.setOrder(order1); throw new IllegalArgumentException(
"Provided navItem instance is the first one, therefore there is no previous item to switch with.");
}
final int navItemOrder = navItem.getOrder();
final int nextOrder = navItems.get(i - 1).get(0).getOrder();
for(PublicPersonalProfileNavItem item : navItems.get(i)) {
item.setOrder(nextOrder);
}
for(PublicPersonalProfileNavItem item : navItems.get(i - 1)) {
item.setOrder(navItemOrder);
} }
} }
private List<List<PublicPersonalProfileNavItem>> generateNavItemList(
final PublicPersonalProfileNavItemCollection collection) {
final List<List<PublicPersonalProfileNavItem>> list =
new ArrayList<List<PublicPersonalProfileNavItem>>();
String lastKey = "";
PublicPersonalProfileNavItem current;
List<PublicPersonalProfileNavItem> currentSubList = null;
collection.rewind();
while (collection.next()) {
current = collection.getNavItem();
if (!current.getKey().equals(lastKey)) {
currentSubList = new ArrayList<PublicPersonalProfileNavItem>();
list.add(currentSubList);
}
currentSubList.add(current);
lastKey = current.getKey();
}
return list;
}
} }