annotate src/main/java/org/mpi/openmind/scripts/MigratePrimeAliases.java @ 112:933d17f95016

new script MigratePrimeAliases to migrate is_prime_alias_X_of.
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Wed, 14 Aug 2019 20:48:02 +0200
parents
children 8acfd380fffe
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 /**
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 */
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
4 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
5
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
6 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
7 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
8
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 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
10 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
11 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
12 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
13 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
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 * @author casties
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
17 *
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 public class MigratePrimeAliases {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
20 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
21
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
22 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
23
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 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
25
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
26 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
27 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
28
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 int cnt = 0;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
30 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
31 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
32 if (alias.isLightweight()) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
33 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
34 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
35 // get relation
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
36 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
37 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
38 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
39 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
40 System.exit(1);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
41 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
42 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
43 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
44 if (tar.isLightweight()) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
45 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
46 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
47 boolean aliasExists = false;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
48 // 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
49 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
50 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
51 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
52 // compare ownvalue
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
53 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
54 aliasExists = true;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
55 break;
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
56 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
57 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
58 if (aliasExists) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
59 deleteList.add(alias);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
60 } else {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
61 // change relation
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
62 rel.setOwnValue(newRelation);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
63 rel.setObjectClass(newRelation);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
64 saveList.add(alias);
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 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
67 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
68 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
69 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
70 // delete obsolete aliases
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
71 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
72 try {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
73 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
74 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
75 } catch (Exception e) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
76 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
77 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
78 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
79 // save changed aliases
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
80 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
81 try {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
82 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
83 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
84 } catch (Exception e) {
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
85 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
86 }
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 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
89 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
90 }
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 /**
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
93 * @param args
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
94 */
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
95 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
96 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
97 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_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
100 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
101
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
102 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
103 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
104
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
105 System.exit(0);
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
106 }
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
107
933d17f95016 new script MigratePrimeAliases to migrate is_prime_alias_X_of.
Robert Casties <casties@mpiwg-berlin.mpg.de>
parents:
diff changeset
108 }