package com.x.query.assemble.surface.jaxrs.table; import com.google.gson.JsonElement; import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.factory.EntityManagerContainerFactory; import com.x.base.core.entity.JpaObject; import com.x.base.core.entity.annotation.CheckPersistType; import com.x.base.core.entity.dynamic.DynamicEntity; import com.x.base.core.project.exception.ExceptionAccessDenied; import com.x.base.core.project.exception.ExceptionEntityNotExist; import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.jaxrs.WoId; import com.x.query.assemble.surface.Business; import com.x.query.core.entity.schema.Table; class ActionRowInsertOne extends BaseAction { ActionResult execute(EffectivePerson effectivePerson, String tableFlag, JsonElement jsonElement) throws Exception { try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { ActionResult result = new ActionResult<>(); Table table = emc.flag(tableFlag, Table.class); Business business = new Business(emc); if (null == table) { throw new ExceptionEntityNotExist(tableFlag, Table.class); } if (!business.editable(effectivePerson, table)) { throw new ExceptionAccessDenied(effectivePerson, table); } DynamicEntity dynamicEntity = new DynamicEntity(table.getName()); @SuppressWarnings("unchecked") Class cls = (Class) Class.forName(dynamicEntity.className()); JpaObject o = gson.fromJson(jsonElement, cls); emc.beginTransaction(cls); emc.persist(o, CheckPersistType.all); emc.commit(); Wo wo = new Wo(); wo.setId(o.getId()); result.setData(wo); return result; } } public static class Wo extends WoId { } }