Fix für Order in RelatedLink und anderen Collections. Fehlerhafte Order-Angaben werden jetzt automatisch korrigiert.

git-svn-id: https://svn.libreccm.org/ccm/trunk@1341 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-12-14 06:25:19 +00:00
parent 9f4864a5be
commit d269b11f5e
4 changed files with 73 additions and 9 deletions

View File

@ -229,6 +229,7 @@ public class RelatedLink extends Link {
"com.arsdigita.cms.contentassets.allRelatedLinkOrderForItem",
"com.arsdigita.cms.contentassets.swapRelatedLinkWithNextInGroup",
this.getLinkListName());
normalizeOrder();
}
/**
@ -241,6 +242,7 @@ public class RelatedLink extends Link {
"com.arsdigita.cms.contentassets.allRelatedLinkOrderForItem",
"com.arsdigita.cms.contentassets.swapRelatedLinkWithNextInGroup",
this.getLinkListName());
normalizeOrder();
}
/**
@ -298,7 +300,22 @@ public class RelatedLink extends Link {
link.setOrder(sortKey);
link.save();
}
}
/**
* This method normalizes the order column of the related links of this
* item. This means that the order column of the first related link will
* have the value 1 after calling this method, and so one.
*/
private void normalizeOrder() {
final DataCollection relatedLinks = getRelatedLinks(getLinkOwner(),
getLinkListName());
int i = 1;
while(relatedLinks.next()) {
relatedLinks.getDataObject().set(ORDER, i);
relatedLinks.getDataObject().save();
i++;
}
}
/**

View File

@ -49,8 +49,8 @@ public class GenericOrganizationalUnitSubordinateCollection extends DomainCollec
}
public void swapWithNext(final GenericOrganizationalUnit orgaunit) {
if (orgaunit == null) {
throw new IllegalArgumentException(
"Parameter orgaunit is null. Can't swap position with null");
@ -87,6 +87,8 @@ public class GenericOrganizationalUnitSubordinateCollection extends DomainCollec
next();
setSubordinateOrder(currentIndex);
rewind();
normalizeOrder();
}
public void swapWithPrevious(final GenericOrganizationalUnit orgaunit) {
@ -128,17 +130,30 @@ public class GenericOrganizationalUnitSubordinateCollection extends DomainCollec
next();
setSubordinateOrder(previousIndex);
rewind();
normalizeOrder();
}
private void normalizeOrder() {
this.rewind();
int i = 1;
while (this.next()) {
setSubordinateOrder(i);
i++;
}
this.rewind();
}
public GenericOrganizationalUnit getGenericOrganizationalUnit() {
return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(m_dataCollection.
getDataObject());
}
public BigDecimal getId() {
return (BigDecimal) m_dataCollection.getDataObject().get(ACSObject.ID);
}
public OID getOID() {
return m_dataCollection.getDataObject().getOID();
}

View File

@ -83,6 +83,8 @@ public class GenericOrganizationalUnitSuperiorCollection extends DomainCollectio
next();
setSuperiorOrder(currentIndex);
rewind();
normalizeOrder();
}
public void swapWithPrevious(final GenericOrganizationalUnit orgaunit) {
@ -124,6 +126,19 @@ public class GenericOrganizationalUnitSuperiorCollection extends DomainCollectio
next();
setSuperiorOrder(previousIndex);
rewind();
normalizeOrder();
}
private void normalizeOrder() {
this.rewind();
int i = 1;
while (this.next()) {
setSuperiorOrder(i);
i++;
}
this.rewind();
}
public GenericOrganizationalUnit getGenericOrganizationalUnit() {

View File

@ -107,6 +107,8 @@ public class AuthorshipCollection extends DomainCollection {
this.next();
this.setAuthorshipOrder(currentIndex);
this.rewind();
normalizeOrder();
}
public void swapWithPrevious(GenericPerson author) {
@ -155,16 +157,31 @@ public class AuthorshipCollection extends DomainCollection {
this.next();
this.setAuthorshipOrder(previousIndex);
this.rewind();
normalizeOrder();
}
private void normalizeOrder() {
this.rewind();
int i = 1;
while (this.next()) {
setAuthorshipOrder(i);
i++;
}
this.rewind();
}
public String getSurname() {
return (String) m_dataCollection.getDataObject().get(GenericPerson.SURNAME);
return (String) m_dataCollection.getDataObject().get(
GenericPerson.SURNAME);
}
public String getGivenName() {
return (String) m_dataCollection.getDataObject().get(GenericPerson.GIVENNAME);
return (String) m_dataCollection.getDataObject().get(
GenericPerson.GIVENNAME);
}
public GenericPerson getAuthor() {
return new GenericPerson(m_dataCollection.getDataObject());
}