Mercurial > hg > openmind
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 |
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 } |