@@ -98,6 +98,7 @@ public class ODatabaseImport extends ODatabaseImpExpAbstract {
98
98
private OIndex <OIdentifiable > exportImportHashTable ;
99
99
100
100
private boolean preserveClusterIDs = true ;
101
+ private boolean merge = false ;
101
102
102
103
private Set <String > indexesToRebuild = new HashSet <String >();
103
104
@@ -141,6 +142,8 @@ protected void parseSetting(final String option, final List<String> items) {
141
142
deleteRIDMapping = Boolean .parseBoolean (items .get (0 ));
142
143
else if (option .equalsIgnoreCase ("-preserveClusterIDs" ))
143
144
preserveClusterIDs = Boolean .parseBoolean (items .get (0 ));
145
+ else if (option .equalsIgnoreCase ("-merge" ))
146
+ merge = Boolean .parseBoolean (items .get (0 ));
144
147
else
145
148
super .parseSetting (option , items );
146
149
}
@@ -160,12 +163,13 @@ public ODatabaseImport importDatabase() {
160
163
161
164
database .setStatus (STATUS .IMPORTING );
162
165
163
- for (OIndex index : database .getMetadata ().getIndexManager ().getIndexes ()) {
166
+ for (OIndex <?> index : database .getMetadata ().getIndexManager ().getIndexes ()) {
164
167
if (index .isAutomatic ())
165
168
indexesToRebuild .add (index .getName ().toLowerCase ());
166
169
}
167
170
168
- removeDefaultNonSecurityClasses ();
171
+ if (!merge )
172
+ removeDefaultNonSecurityClasses ();
169
173
170
174
String tag ;
171
175
while (jsonReader .hasNext () && jsonReader .lastChar () != '}' ) {
@@ -214,7 +218,7 @@ else if (tag.equals("manualIndexes"))
214
218
}
215
219
216
220
private void removeDefaultNonSecurityClasses () {
217
- listener .onMessage ("\n Removing all default non security classes" );
221
+ listener .onMessage ("\n Non merge mode (-merge=false): removing all default non security classes" );
218
222
219
223
OSchema schema = database .getMetadata ().getSchema ();
220
224
Collection <OClass > classes = schema .getClasses ();
@@ -233,18 +237,20 @@ private void removeDefaultNonSecurityClasses() {
233
237
}
234
238
}
235
239
240
+ int removedClasses = 0 ;
236
241
for (String className : classesSortedByInheritance ) {
237
242
if (!className .equalsIgnoreCase (ORole .CLASS_NAME ) && !className .equalsIgnoreCase (OUser .CLASS_NAME )
238
243
&& !className .equalsIgnoreCase (OSecurityShared .IDENTITY_CLASSNAME )) {
239
244
schema .dropClass (className );
240
- listener .onMessage ("\n Class " + className + " was removed." );
245
+ removedClasses ++;
246
+ listener .onMessage ("\n - Class " + className + " was removed." );
241
247
}
242
248
}
243
249
244
250
schema .save ();
245
251
schema .reload ();
246
252
247
- listener .onMessage ("\n Removing all default non security classes ... DONE ." );
253
+ listener .onMessage ("\n Removed " + removedClasses + " classes ." );
248
254
}
249
255
250
256
private void importInfo () throws IOException , ParseException {
0 commit comments