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