annotate src/main/java/org/mpi/openmind/scripts/MigratePrimeAliases.java @ 127:3e772f7f43e0 default tip

ismi-date with long month names in xml dump.
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Thu, 11 May 2023 18:15:45 +0200
parents 8acfd380fffe
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
112
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
1 package org.mpi.openmind.scripts;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
2
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
3 import java.util.ArrayList;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
4 import java.util.List;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
5
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
6 import org.apache.log4j.Logger;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
7 import org.mpi.openmind.cache.WrapperService;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
8 import org.mpi.openmind.repository.bo.Entity;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 import org.mpi.openmind.repository.bo.Relation;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
10 import org.mpi.openmind.repository.services.ServiceRegistry;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
11
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
12 /**
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
13 * @author casties
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
14 *
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
15 */
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
16 public class MigratePrimeAliases {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
17 private static final String migrateUser = "migrate-alias user";
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
18
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
19 private static Logger logger = Logger.getLogger(MigratePrimeAliases.class);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
20
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
21 protected static void migrate(String oldRelation, String newRelation, WrapperService wrapper) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
22
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
23 List<Entity> deleteList = new ArrayList<Entity>();
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 List<Entity> saveList = new ArrayList<Entity>();
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
25
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
26 int cnt = 0;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
27 List<Entity> aliasList = wrapper.getEntitiesByDef("ALIAS");
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
28 for (Entity alias : aliasList) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 if (alias.isLightweight()) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
30 alias = wrapper.getEntityContent(alias);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
31 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
32 // get relation
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
33 List<Relation> rels = alias.getSourceRelations(oldRelation, "*");
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
34 if (rels.isEmpty()) continue;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
35 if (rels.size() > 1) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
36 logger.error("ALIAS has more than one relation!");
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
37 System.exit(1);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
38 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
39 Relation rel = rels.get(0);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
40 Entity tar = wrapper.getEntityById(rel.getTargetId());
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
41 if (tar.isLightweight()) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
42 tar = wrapper.getEntityContent(tar);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
43 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
44 boolean aliasExists = false;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
45 // get other aliases of target
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
46 List<Relation> otherrels = tar.getTargetRelations(newRelation, "ALIAS");
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
47 for (Relation otherrel : otherrels) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
48 Entity otheralias = wrapper.getEntityById(otherrel.getSourceId());
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
49 // compare ownvalue
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
50 if (alias.getOwnValue().equals(otheralias.getOwnValue())) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
51 aliasExists = true;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
52 break;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
53 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
54 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
55 if (aliasExists) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
56 deleteList.add(alias);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
57 } else {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
58 // change relation
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
59 rel.setOwnValue(newRelation);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
60 rel.setObjectClass(newRelation);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
61 saveList.add(alias);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
62 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
63 if (++cnt % 100 == 0) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
64 logger.debug(cnt+" aliases...");
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
65 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
66 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
67 // delete obsolete aliases
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
68 for (Entity alias : deleteList) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
69 try {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
70 logger.debug("Deleting obsolete alias: "+alias);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
71 wrapper.removeCurrentVersionEntity(alias, migrateUser);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
72 } catch (Exception e) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
73 logger.error("Error deleting alias!", e);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
74 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
75 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
76 // save changed aliases
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
77 for (Entity alias: saveList) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
78 try {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
79 logger.debug("Saving changed alias: "+alias);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
80 wrapper.saveEntity(alias, migrateUser, null);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
81 } catch (Exception e) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
82 logger.error("Error saving changed aliases!", e);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
83 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
84 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
85 logger.info("Deleted "+deleteList.size()+" aliases.");
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
86 logger.info("Changed "+saveList.size()+" aliases.");
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
87 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
88
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
89 /**
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
90 * @param args
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
91 */
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
92 public static void main(String[] args) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
93 ServiceRegistry services = new ServiceRegistry();
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
94 services.getWrapper();
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
95
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
96 logger.info("Migrating ALIAS from is_prime_alias_name_of to is_alias_name_of");
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
97 migrate("is_prime_alias_name_of", "is_alias_name_of", services.getWrapper());
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
98
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
99 logger.info("Migrating ALIAS from is_prime_alias_title_of to is_alias_title_of");
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
100 migrate("is_prime_alias_title_of", "is_alias_title_of", services.getWrapper());
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
101
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
102 System.exit(0);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
103 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
104
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
105 }