package pt.utl.ist.scripts.runOnce.research; import java.util.SortedSet; import java.util.TreeSet; import net.sourceforge.fenixedu.domain.Person; import net.sourceforge.fenixedu.domain.organizationalStructure.Party; import net.sourceforge.fenixedu.domain.research.result.publication.PreferredPublication.PreferredComparator; import net.sourceforge.fenixedu.domain.research.result.publication.PreferredPublicationPriority; import net.sourceforge.fenixedu.domain.research.result.publication.ResearchResultPublication; import pt.utl.ist.scripts.commons.AtomicScript; public class CutPreferredPublicationsTo5 extends AtomicScript { @Override protected void run() throws Exception { int fixed = 0; for (Party party : rootDomainObject.getPartysSet()) { if (party instanceof Person) { Person person = (Person) party; if (person.getPreferredPublicationSet().size() > 5) { SortedSet results = new TreeSet(new PreferredComparator(person)); results.addAll(person.getResearchResultPublications()); resetPreferred(person, results); fixed++; } } } System.out.println("Fixed: " + fixed); } private void resetPreferred(Person person, SortedSet results) { PreferredPublicationPriority[] priorities = PreferredPublicationPriority.values(); int i = 5; for (ResearchResultPublication result : results) { result.setPreferredLevel(person, priorities[i--]); if (i == 0) { break; } } } public static void main(String[] args) { processWriteTransaction(new CutPreferredPublicationsTo5()); } }