[Minor] Optimize bulk operations in transactions
This commit is contained in:
parent
bff8658c22
commit
110569b895
|
@ -1403,98 +1403,123 @@ public abstract class AbstractTransaction implements StrolchTransaction {
|
||||||
if (this.objectFilter == null)
|
if (this.objectFilter == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
List<Object> removed;
|
List<Object> changed;
|
||||||
List<Object> updated;
|
|
||||||
List<Object> added;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Resources
|
* Resources
|
||||||
*/
|
*/
|
||||||
removed = this.objectFilter.getRemoved(Tags.RESOURCE);
|
// removed
|
||||||
if (!removed.isEmpty()) {
|
changed = this.objectFilter.getRemoved(Tags.RESOURCE);
|
||||||
for (Object obj : removed) {
|
if (changed.size() == 1) {
|
||||||
RemoveResourceCommand cmd = new RemoveResourceCommand(this);
|
RemoveResourceCommand cmd = new RemoveResourceCommand(this);
|
||||||
cmd.setResource((Resource) obj);
|
cmd.setResource((Resource) changed.get(0));
|
||||||
addCommand(cmd);
|
addCommand(cmd);
|
||||||
}
|
} else if (changed.size() > 1) {
|
||||||
|
RemoveResourcesCommand cmd = new RemoveResourcesCommand(this);
|
||||||
|
changed.stream().map(e -> (Resource) e).forEach(cmd::addResource);
|
||||||
|
addCommand(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
updated = this.objectFilter.getUpdated(Tags.RESOURCE);
|
// updated
|
||||||
if (!updated.isEmpty()) {
|
changed = this.objectFilter.getUpdated(Tags.RESOURCE);
|
||||||
for (Object obj : updated) {
|
if (changed.size() == 1) {
|
||||||
UpdateResourceCommand cmd = new UpdateResourceCommand(this);
|
UpdateResourceCommand cmd = new UpdateResourceCommand(this);
|
||||||
cmd.setResource((Resource) obj);
|
cmd.setResource((Resource) changed.get(0));
|
||||||
addCommand(cmd);
|
addCommand(cmd);
|
||||||
}
|
} else if (changed.size() > 1) {
|
||||||
|
UpdateResourcesCommand cmd = new UpdateResourcesCommand(this);
|
||||||
|
changed.stream().map(e -> (Resource) e).forEach(cmd::addResource);
|
||||||
|
addCommand(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
added = this.objectFilter.getAdded(Tags.RESOURCE);
|
// added
|
||||||
if (!added.isEmpty()) {
|
changed = this.objectFilter.getAdded(Tags.RESOURCE);
|
||||||
for (Object obj : added) {
|
if (changed.size() == 1) {
|
||||||
AddResourceCommand cmd = new AddResourceCommand(this);
|
AddResourceCommand cmd = new AddResourceCommand(this);
|
||||||
cmd.setResource((Resource) obj);
|
cmd.setResource((Resource) changed.get(0));
|
||||||
addCommand(cmd);
|
addCommand(cmd);
|
||||||
}
|
} else if (changed.size() > 1) {
|
||||||
|
AddResourcesCommand cmd = new AddResourcesCommand(this);
|
||||||
|
changed.stream().map(e -> (Resource) e).forEach(cmd::addResource);
|
||||||
|
addCommand(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Orders
|
* Orders
|
||||||
*/
|
*/
|
||||||
removed = this.objectFilter.getRemoved(Tags.ORDER);
|
// removed
|
||||||
if (!removed.isEmpty()) {
|
changed = this.objectFilter.getRemoved(Tags.ORDER);
|
||||||
for (Object obj : removed) {
|
if (changed.size() == 1) {
|
||||||
RemoveOrderCommand cmd = new RemoveOrderCommand(this);
|
RemoveOrderCommand cmd = new RemoveOrderCommand(this);
|
||||||
cmd.setOrder((Order) obj);
|
cmd.setOrder((Order) changed.get(0));
|
||||||
addCommand(cmd);
|
addCommand(cmd);
|
||||||
}
|
} else if (changed.size() > 1) {
|
||||||
|
RemoveOrdersCommand cmd = new RemoveOrdersCommand(this);
|
||||||
|
changed.stream().map(e -> (Order) e).forEach(cmd::addOrder);
|
||||||
|
addCommand(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
updated = this.objectFilter.getUpdated(Tags.ORDER);
|
// updated
|
||||||
if (!updated.isEmpty()) {
|
changed = this.objectFilter.getUpdated(Tags.ORDER);
|
||||||
for (Object obj : updated) {
|
if (changed.size() == 1) {
|
||||||
UpdateOrderCommand cmd = new UpdateOrderCommand(this);
|
UpdateOrderCommand cmd = new UpdateOrderCommand(this);
|
||||||
cmd.setOrder((Order) obj);
|
cmd.setOrder((Order) changed.get(0));
|
||||||
addCommand(cmd);
|
addCommand(cmd);
|
||||||
}
|
} else if (changed.size() > 1) {
|
||||||
|
UpdateOrdersCommand cmd = new UpdateOrdersCommand(this);
|
||||||
|
changed.stream().map(e -> (Order) e).forEach(cmd::addOrder);
|
||||||
|
addCommand(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
added = this.objectFilter.getAdded(Tags.ORDER);
|
// added
|
||||||
if (!added.isEmpty()) {
|
changed = this.objectFilter.getAdded(Tags.ORDER);
|
||||||
for (Object obj : added) {
|
if (changed.size() == 1) {
|
||||||
AddOrderCommand cmd = new AddOrderCommand(this);
|
AddOrderCommand cmd = new AddOrderCommand(this);
|
||||||
cmd.setOrder((Order) obj);
|
cmd.setOrder((Order) changed.get(0));
|
||||||
addCommand(cmd);
|
addCommand(cmd);
|
||||||
}
|
} else if (changed.size() > 1) {
|
||||||
|
AddOrdersCommand cmd = new AddOrdersCommand(this);
|
||||||
|
changed.stream().map(e -> (Order) e).forEach(cmd::addOrder);
|
||||||
|
addCommand(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Activities
|
* Activities
|
||||||
*/
|
*/
|
||||||
removed = this.objectFilter.getRemoved(Tags.ACTIVITY);
|
// removed
|
||||||
if (!removed.isEmpty()) {
|
changed = this.objectFilter.getRemoved(Tags.ACTIVITY);
|
||||||
for (Object obj : removed) {
|
if (changed.size() == 1) {
|
||||||
RemoveActivityCommand cmd = new RemoveActivityCommand(this);
|
RemoveActivityCommand cmd = new RemoveActivityCommand(this);
|
||||||
cmd.setActivity((Activity) obj);
|
cmd.setActivity((Activity) changed.get(0));
|
||||||
addCommand(cmd);
|
addCommand(cmd);
|
||||||
}
|
} else if (changed.size() > 1) {
|
||||||
|
RemoveActivitiesCommand cmd = new RemoveActivitiesCommand(this);
|
||||||
|
changed.stream().map(e -> (Activity) e).forEach(cmd::addActivity);
|
||||||
|
addCommand(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
updated = this.objectFilter.getUpdated(Tags.ACTIVITY);
|
// updated
|
||||||
if (!updated.isEmpty()) {
|
changed = this.objectFilter.getUpdated(Tags.ACTIVITY);
|
||||||
for (Object obj : updated) {
|
if (changed.size() == 1) {
|
||||||
UpdateActivityCommand cmd = new UpdateActivityCommand(this);
|
UpdateActivityCommand cmd = new UpdateActivityCommand(this);
|
||||||
cmd.setActivity((Activity) obj);
|
cmd.setActivity((Activity) changed.get(0));
|
||||||
addCommand(cmd);
|
addCommand(cmd);
|
||||||
}
|
} else if (changed.size() > 1) {
|
||||||
|
UpdateActivitiesCommand cmd = new UpdateActivitiesCommand(this);
|
||||||
|
changed.stream().map(e -> (Activity) e).forEach(cmd::addActivity);
|
||||||
|
addCommand(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
added = this.objectFilter.getAdded(Tags.ACTIVITY);
|
// added
|
||||||
if (!added.isEmpty()) {
|
changed = this.objectFilter.getAdded(Tags.ACTIVITY);
|
||||||
for (Object obj : added) {
|
if (changed.size() == 1) {
|
||||||
AddActivityCommand cmd = new AddActivityCommand(this);
|
AddActivityCommand cmd = new AddActivityCommand(this);
|
||||||
cmd.setActivity((Activity) obj);
|
cmd.setActivity((Activity) changed.get(0));
|
||||||
addCommand(cmd);
|
addCommand(cmd);
|
||||||
}
|
} else if (changed.size() > 1) {
|
||||||
|
AddActivitiesCommand cmd = new AddActivitiesCommand(this);
|
||||||
|
changed.stream().map(e -> (Activity) e).forEach(cmd::addActivitiy);
|
||||||
|
addCommand(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear, so that we don't do it twice in case of a flush()
|
// clear, so that we don't do it twice in case of a flush()
|
||||||
|
|
Loading…
Reference in New Issue