Search in sources :

Example 1 with CommandInsert

use of com.tvd12.dahlia.core.command.CommandInsert 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;
}
Also used : FieldSetting(com.tvd12.dahlia.core.setting.FieldSetting) CollectionSetting(com.tvd12.dahlia.core.setting.CollectionSetting) EzyArray(com.tvd12.ezyfox.entity.EzyArray) Collection(com.tvd12.dahlia.core.entity.Collection) Record(com.tvd12.dahlia.core.entity.Record) EzyObject(com.tvd12.ezyfox.entity.EzyObject) CollectionStorage(com.tvd12.dahlia.core.storage.CollectionStorage)

Example 2 with CommandInsert

use of com.tvd12.dahlia.core.command.CommandInsert in project dahlia by youngmonkeys.

the class LocalCollection method insert.

@Override
public EzyArray insert(EzyArray records) {
    CommandInsert command = new CommandInsert(store.getId(), records);
    EzyArray result = commandExecutor.execute(command);
    return result;
}
Also used : EzyArray(com.tvd12.ezyfox.entity.EzyArray) CommandInsert(com.tvd12.dahlia.core.command.CommandInsert)

Aggregations

EzyArray (com.tvd12.ezyfox.entity.EzyArray)2 CommandInsert (com.tvd12.dahlia.core.command.CommandInsert)1 Collection (com.tvd12.dahlia.core.entity.Collection)1 Record (com.tvd12.dahlia.core.entity.Record)1 CollectionSetting (com.tvd12.dahlia.core.setting.CollectionSetting)1 FieldSetting (com.tvd12.dahlia.core.setting.FieldSetting)1 CollectionStorage (com.tvd12.dahlia.core.storage.CollectionStorage)1 EzyObject (com.tvd12.ezyfox.entity.EzyObject)1