use of com.tvd12.dahlia.core.entity.Record in project dahlia by youngmonkeys.
the class LocalCollection method insert.
@Override
public EzyObject insert(EzyObject record) {
CommandInsertOne command = new CommandInsertOne(store.getId(), record);
EzyObject result = commandExecutor.execute(command);
return result;
}
use of com.tvd12.dahlia.core.entity.Record in project dahlia by youngmonkeys.
the class CommandInsertHandler method handle.
@Override
public Object handle(CommandInsert command) {
int collectionId = command.getCollectionId();
EzyArray data = command.getData();
Collection collection = databases.getCollection(collectionId);
CollectionSetting setting = collection.getSetting();
FieldSetting sId = setting.getId();
Map<String, FieldSetting> sFields = setting.getFields();
long dataSize = collection.getDataSize();
CollectionStorage collectionStorage = storage.getCollectionStorage(collectionId);
EzyArray answerItems = EzyEntityFactory.newArray();
synchronized (collection) {
for (int i = 0; i < data.size(); ++i) {
EzyObject answerItem = EzyEntityFactory.newObject();
EzyObject item = data.get(i);
Comparable id = item.get(Constants.FIELD_ID);
if (id != null) {
Record existed = collection.findById(id);
if (existed != null) {
answerItem.put(Constants.RESULT_FIELD_EXISTED, true);
answerItems.add(id);
continue;
}
} else {
while (true) {
id = UUID.randomUUID();
Record existed = collection.findById(id);
if (existed == null)
break;
}
}
Record record = new Record(id, dataSize);
collection.insert(record);
collection.increaseDataSize();
collectionStorage.storeRecord(record, sId, sFields, item);
answerItem.put(Constants.FIELD_ID, id);
answerItems.add(id);
}
}
return answerItems;
}
use of com.tvd12.dahlia.core.entity.Record in project dahlia by youngmonkeys.
the class CommandInsertOneHandler method handle.
@Override
public Object handle(CommandInsertOne command) {
int collectionId = command.getCollectionId();
EzyObject data = command.getData();
Collection collection = databases.getCollection(collectionId);
CollectionSetting setting = collection.getSetting();
CollectionStorage collectionStorage = storage.getCollectionStorage(collectionId);
Comparable id = data.get(Constants.FIELD_ID);
synchronized (collection) {
if (id != null) {
Record existed = collection.findById(id);
if (existed != null)
throw new DuplicatedIdException(collection.getName(), id);
} else {
while (true) {
id = UUID.randomUUID();
Record existed = collection.findById(id);
if (existed == null)
break;
}
data.put(Constants.FIELD_ID, id);
}
Record record = new Record(id, collection.getDataSize());
collection.insert(record);
collection.increaseDataSize();
collectionStorage.storeRecord(record, setting.getId(), setting.getFields(), data);
}
EzyObject answer = EzyEntityFactory.newObject();
answer.put(Constants.FIELD_ID, id);
return answer;
}
use of com.tvd12.dahlia.core.entity.Record in project dahlia by youngmonkeys.
the class CommandSaveOneHandler method handle.
@Override
public Object handle(CommandSaveOne command) {
int collectionId = command.getCollectionId();
EzyObject data = command.getData();
Collection collection = databases.getCollection(collectionId);
CollectionSetting setting = collection.getSetting();
CollectionStorage collectionStorage = storage.getCollectionStorage(collectionId);
Comparable id = data.get(Constants.FIELD_ID);
EzyObject answer = EzyEntityFactory.newObject();
synchronized (collection) {
if (id != null) {
Record existed = collection.findById(id);
if (existed != null)
answer.put(Constants.RESULT_FIELD_EXISTED, true);
} else {
while (true) {
id = UUID.randomUUID();
Record existed = collection.findById(id);
if (existed == null)
break;
}
data.put(Constants.FIELD_ID, id);
}
Record record = new Record(id, collection.getDataSize());
collection.insert(record);
collection.increaseDataSize();
collectionStorage.storeRecord(record, setting.getId(), setting.getFields(), data);
}
answer.put(Constants.FIELD_ID, id);
return answer;
}
use of com.tvd12.dahlia.core.entity.Record in project dahlia by youngmonkeys.
the class QueryToPredicate method toDefaultPredicate.
protected Predicate<EzyObject> toDefaultPredicate(EzyObject query) {
for (Entry kv : query.entrySet()) {
String field = null;
Object value = kv.getValue();
String fieldOrOperation = (String) kv.getKey();
Operation operation = Operation.valueOfKeyword(fieldOrOperation);
if (operation != null) {
EzyObject oValue = (EzyObject) value;
for (Entry e : oValue.entrySet()) {
field = (String) e.getKey();
value = e.getValue();
break;
}
} else if (value instanceof EzyObject) {
EzyObject oValue = (EzyObject) value;
for (Entry e : oValue.entrySet()) {
String keyword = (String) e.getKey();
operation = Operation.valueOfKeyword(keyword);
value = e.getValue();
break;
}
} else {
field = fieldOrOperation;
operation = Operation.EQ;
}
String qField = field;
Object qValue = value;
Operation qOperation = operation;
return record -> {
Object rValue = record.get(qField);
int compareResult = compareValue(rValue, qValue);
if (qOperation == Operation.GT)
return compareResult > 0;
if (qOperation == Operation.GTE)
return compareResult >= 0;
if (qOperation == Operation.LT)
return compareResult < 0;
if (qOperation == Operation.LTE)
return compareResult <= 0;
if (qOperation == Operation.NEQ)
return compareResult != 0;
return compareResult == 0;
};
}
return record -> false;
}
Aggregations