commit
3cd8707659
|
@ -0,0 +1,31 @@
|
||||||
|
package com.databasir.core.domain.document.diff;
|
||||||
|
|
||||||
|
import com.databasir.core.diff.data.DiffType;
|
||||||
|
import com.databasir.core.domain.document.data.DatabaseDocumentSimpleResponse;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class DiffTypePredictor {
|
||||||
|
|
||||||
|
public static DiffType predict(List<DatabaseDocumentSimpleResponse.TableData> result) {
|
||||||
|
long changedItemSize = result.stream()
|
||||||
|
.filter(item -> !item.getDiffType().isNone())
|
||||||
|
.count();
|
||||||
|
long addedItemSize = result.stream()
|
||||||
|
.filter(item -> !item.getDiffType().isNone())
|
||||||
|
.filter(item -> item.getDiffType().isAdded())
|
||||||
|
.count();
|
||||||
|
long removedItemSize = result.stream()
|
||||||
|
.filter(item -> !item.getDiffType().isNone())
|
||||||
|
.filter(item -> item.getDiffType().isRemoved())
|
||||||
|
.count();
|
||||||
|
if (changedItemSize > 0 && addedItemSize == changedItemSize) {
|
||||||
|
return DiffType.ADDED;
|
||||||
|
} else if (changedItemSize > 0 && removedItemSize == changedItemSize) {
|
||||||
|
return DiffType.REMOVED;
|
||||||
|
} else {
|
||||||
|
return result.stream()
|
||||||
|
.anyMatch(t -> t.getDiffType() != DiffType.NONE) ? DiffType.MODIFIED : DiffType.NONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,6 +13,7 @@ import com.databasir.core.domain.document.comparator.TableDiffResult;
|
||||||
import com.databasir.core.domain.document.converter.*;
|
import com.databasir.core.domain.document.converter.*;
|
||||||
import com.databasir.core.domain.document.data.*;
|
import com.databasir.core.domain.document.data.*;
|
||||||
import com.databasir.core.domain.document.data.TableDocumentResponse.ForeignKeyDocumentResponse;
|
import com.databasir.core.domain.document.data.TableDocumentResponse.ForeignKeyDocumentResponse;
|
||||||
|
import com.databasir.core.domain.document.diff.DiffTypePredictor;
|
||||||
import com.databasir.core.domain.document.event.DocumentUpdated;
|
import com.databasir.core.domain.document.event.DocumentUpdated;
|
||||||
import com.databasir.core.domain.document.generator.DocumentFileGenerator;
|
import com.databasir.core.domain.document.generator.DocumentFileGenerator;
|
||||||
import com.databasir.core.domain.document.generator.DocumentFileGenerator.DocumentFileGenerateContext;
|
import com.databasir.core.domain.document.generator.DocumentFileGenerator.DocumentFileGenerateContext;
|
||||||
|
@ -274,16 +275,7 @@ public class DocumentService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result.sort(Comparator.comparing(DatabaseDocumentSimpleResponse.TableData::getName));
|
result.sort(Comparator.comparing(DatabaseDocumentSimpleResponse.TableData::getName));
|
||||||
var notNoneDiffs = result.stream().filter(item -> !item.getDiffType().isNone());
|
DiffType diffType = DiffTypePredictor.predict(result);
|
||||||
boolean allAdded = notNoneDiffs.count() > 0
|
|
||||||
&& notNoneDiffs.allMatch(item -> item.getDiffType().isAdded());
|
|
||||||
DiffType diffType;
|
|
||||||
if (allAdded) {
|
|
||||||
diffType = DiffType.ADDED;
|
|
||||||
} else {
|
|
||||||
diffType = result.stream()
|
|
||||||
.anyMatch(t -> t.getDiffType() != DiffType.NONE) ? DiffType.MODIFIED : DiffType.NONE;
|
|
||||||
}
|
|
||||||
return documentSimpleResponseConverter.of(document, result, diffType, projectName);
|
return documentSimpleResponseConverter.of(document, result, diffType, projectName);
|
||||||
} else {
|
} else {
|
||||||
tableMetas.sort(Comparator.comparing(DatabaseDocumentSimpleResponse.TableData::getName));
|
tableMetas.sort(Comparator.comparing(DatabaseDocumentSimpleResponse.TableData::getName));
|
||||||
|
|
|
@ -11,6 +11,10 @@ public enum DiffType {
|
||||||
return this == ADDED;
|
return this == ADDED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isRemoved() {
|
||||||
|
return this == REMOVED;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isNone() {
|
public boolean isNone() {
|
||||||
return this == NONE;
|
return this == NONE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue