Skip to content

Commit c21dea3

Browse files
committed
Import database: new -merge params to avoid deleting existent classes/clusters
1 parent 3d99a1f commit c21dea3

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

core/src/main/java/com/orientechnologies/orient/core/db/tool/ODatabaseImport.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public class ODatabaseImport extends ODatabaseImpExpAbstract {
9898
private OIndex<OIdentifiable> exportImportHashTable;
9999

100100
private boolean preserveClusterIDs = true;
101+
private boolean merge = false;
101102

102103
private Set<String> indexesToRebuild = new HashSet<String>();
103104

@@ -141,6 +142,8 @@ protected void parseSetting(final String option, final List<String> items) {
141142
deleteRIDMapping = Boolean.parseBoolean(items.get(0));
142143
else if (option.equalsIgnoreCase("-preserveClusterIDs"))
143144
preserveClusterIDs = Boolean.parseBoolean(items.get(0));
145+
else if (option.equalsIgnoreCase("-merge"))
146+
merge = Boolean.parseBoolean(items.get(0));
144147
else
145148
super.parseSetting(option, items);
146149
}
@@ -160,12 +163,13 @@ public ODatabaseImport importDatabase() {
160163

161164
database.setStatus(STATUS.IMPORTING);
162165

163-
for (OIndex index : database.getMetadata().getIndexManager().getIndexes()) {
166+
for (OIndex<?> index : database.getMetadata().getIndexManager().getIndexes()) {
164167
if (index.isAutomatic())
165168
indexesToRebuild.add(index.getName().toLowerCase());
166169
}
167170

168-
removeDefaultNonSecurityClasses();
171+
if (!merge)
172+
removeDefaultNonSecurityClasses();
169173

170174
String tag;
171175
while (jsonReader.hasNext() && jsonReader.lastChar() != '}') {
@@ -214,7 +218,7 @@ else if (tag.equals("manualIndexes"))
214218
}
215219

216220
private void removeDefaultNonSecurityClasses() {
217-
listener.onMessage("\nRemoving all default non security classes");
221+
listener.onMessage("\nNon merge mode (-merge=false): removing all default non security classes");
218222

219223
OSchema schema = database.getMetadata().getSchema();
220224
Collection<OClass> classes = schema.getClasses();
@@ -233,18 +237,20 @@ private void removeDefaultNonSecurityClasses() {
233237
}
234238
}
235239

240+
int removedClasses = 0;
236241
for (String className : classesSortedByInheritance) {
237242
if (!className.equalsIgnoreCase(ORole.CLASS_NAME) && !className.equalsIgnoreCase(OUser.CLASS_NAME)
238243
&& !className.equalsIgnoreCase(OSecurityShared.IDENTITY_CLASSNAME)) {
239244
schema.dropClass(className);
240-
listener.onMessage("\nClass " + className + " was removed.");
245+
removedClasses++;
246+
listener.onMessage("\n- Class " + className + " was removed.");
241247
}
242248
}
243249

244250
schema.save();
245251
schema.reload();
246252

247-
listener.onMessage("\nRemoving all default non security classes ... DONE.");
253+
listener.onMessage("\nRemoved " + removedClasses + " classes.");
248254
}
249255

250256
private void importInfo() throws IOException, ParseException {

tools/src/main/java/com/orientechnologies/orient/console/OConsoleDatabaseApp.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1522,7 +1522,7 @@ public void importDatabase(@ConsoleParameter(name = "options", description = "Im
15221522
throws IOException {
15231523
checkForDatabase();
15241524

1525-
message("\nImporting database " + text + "...");
1525+
message("\nImporting " + text + "...");
15261526

15271527
final List<String> items = OStringSerializerHelper.smartSplit(text, ' ');
15281528
final String fileName = items.size() <= 0 || (items.get(1)).charAt(0) == '-' ? null : items.get(1);

0 commit comments

Comments
 (0)