@Override public Object build(String string) { if (StringUtils.isBlank(string)) return null; EntityLoadInfo info = EntityLoadInfo.parse(string); if (info == null) throw new IllegalArgumentException("Invalid entity info: " + string); LoadContext ctx = new LoadContext(info.getMetaClass()).setId(info.getId()); if (info.getViewName() != null) ctx.setView(info.getViewName()); return ds.load(ctx); } }
protected Entity loadEntityInstance(EntityLoadInfo info) { if (info.isNewEntity()) { return metadata.create(info.getMetaClass()); } //noinspection unchecked LoadContext<Entity> ctx = new LoadContext(info.getMetaClass()).setId(info.getId()); if (info.getViewName() != null) { View view = viewRepository.findView(info.getMetaClass(), info.getViewName()); if (view != null) { ctx.setView(view); } else { log.warn("Unable to find view \"{}\" for entity \"{}\"", info.getViewName(), info.getMetaClass()); } } Entity entity; try { entity = dataService.load(ctx); } catch (Exception e) { log.warn("Unable to load item: {}", info, e); return null; } return entity; }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; InstanceRef that = (InstanceRef) o; if (!loadInfo.getId().equals(that.loadInfo.getId())) return false; if (!loadInfo.getMetaClass().equals(that.loadInfo.getMetaClass())) return false; return true; }
@Override public Object convertFromString(Class parameterClass, String paramValueStr) { if (paramValueStr == null) { return null; } else if (String.class.isAssignableFrom(parameterClass)) { return paramValueStr; } else if (Entity.class.isAssignableFrom(parameterClass)) { EntityLoadInfo entityLoadInfo = EntityLoadInfo.parse(paramValueStr); if (entityLoadInfo != null) { return dataManager.load(new LoadContext(entityLoadInfo.getMetaClass()).setId(entityLoadInfo.getId()).setView(View.BASE)); } else { UUID id = UUID.fromString(paramValueStr); return dataManager.load(new LoadContext(parameterClass).setId(id).setView(View.BASE)); } } else { Datatype datatype = Datatypes.get(parameterClass); if (datatype != null) { try { return datatype.parse(paramValueStr); } catch (ParseException e) { throw new ReportingException( String.format("Couldn't read value [%s] with datatype [%s].", paramValueStr, datatype)); } } else { return convertFromStringUnresolved(parameterClass, paramValueStr); } } } }
public InstanceRef parseInstanceRefAndRegister(String fullId) throws InstantiationException, IllegalAccessException { EntityLoadInfo loadInfo; if (!fullId.startsWith("NEW-")) { loadInfo = EntityLoadInfo.parse(fullId); if (loadInfo == null) { throw new RuntimeException("Cannot parse id: " + fullId); } InstanceRef existingRef = instanceRefs.get(loadInfo.getMetaClass().getName() + "-" + loadInfo.getId().toString()); if (existingRef != null) { return existingRef; } } else { int idDashIndex = StringUtils.ordinalIndexOf(fullId, "-", 2); if (idDashIndex == -1) { String entityName = fullId.substring("NEW-".length()); String generatedId = generateId(entityName); fullId = fullId + "-" + generatedId; } loadInfo = EntityLoadInfo.parse(fullId); if (loadInfo == null) { throw new RuntimeException("Cannot parse id: " + fullId); } } if (loadInfo.isNewEntity()) newInstanceIds.add(loadInfo.toString()); InstanceRef result = new InstanceRef(loadInfo); instanceRefs.put(loadInfo.getMetaClass().getName() + "-" + loadInfo.getId().toString(), result); return result; }
protected Entity loadEntityInstance(EntityLoadInfo info) { LoadContext ctx = new LoadContext(info.getMetaClass()).setId(info.getId()); if (info.getViewName() != null) { ctx.setView(info.getViewName()); } //noinspection unchecked return dataService.load(ctx); }
public MetaClass getMetaClass() { return loadInfo.getMetaClass(); }
public Object getId() { return loadInfo.getId(); }
protected Map<String, Object> getParamsMap(Map<String, String> requestParams) { Map<String, Object> params = new HashMap<>(); String paramsStr = requestParams.get("params"); if (paramsStr == null) return params; String[] entries = paramsStr.split(","); for (String entry : entries) { String[] parts = entry.split(":"); if (parts.length != 2) { log.warn("Invalid parameter: {}", entry); return params; } String name = parts[0]; String value = parts[1]; EntityLoadInfo info = EntityLoadInfo.parse(value); if (info != null) { Entity entity = loadEntityInstance(info); if (entity != null) params.put(name, entity); } else if (Boolean.TRUE.toString().equals(value) || Boolean.FALSE.toString().equals(value)) { params.put(name, BooleanUtils.toBoolean(value)); } else { params.put(name, value); } } return params; }
/** * Create a new info instance with empty view name. * <p>Consider using {@link EntityLoadInfoBuilder} for better performance.</p> * @param entity entity instance * @return info instance */ public static EntityLoadInfo create(Entity entity) { return create(entity, null); }
@Override public String convertToDatabaseColumn(Entity softReference) { if (softReference == null) return ""; EntityLoadInfoBuilder builder = getEntityLoadInfoBuilder(); EntityLoadInfo entityLoadInfo = builder.create(softReference); return entityLoadInfo.toString(); }
protected Entity _parseEntity(JSONObject json) { try { String id = json.getString("id"); EntityLoadInfo loadInfo = EntityLoadInfo.parse(id); setField(instance, "id", loadInfo.getId()); MetaClass metaClass = loadInfo.getMetaClass(); Iterator iter = json.keys(); while (iter.hasNext()) {
@Override public int hashCode() { int result1 = loadInfo.getId().hashCode(); result1 = 31 * result1 + loadInfo.getMetaClass().hashCode(); return result1; } }
/** * Creates new entity instance from {@link com.haulmont.cuba.core.global.EntityLoadInfo} * and reset fields values */ protected Entity createEmptyInstance(EntityLoadInfo loadInfo) throws IllegalAccessException, InstantiationException { MetaClass metaClass = loadInfo.getMetaClass(); Entity instance = metadata.create(metaClass); for (MetaProperty metaProperty : metaClass.getProperties()) { if (!metaProperty.isReadOnly()) instance.setValue(metaProperty.getName(), null); } return instance; }
EntityLoadInfo info = EntityLoadInfo.parse(value); if (info == null) { if ("true".equalsIgnoreCase(value) || "false".equalsIgnoreCase(value)) {
entityLoadInfo = EntityLoadInfo.parse(idPrimitive.getAsString()); if (entityLoadInfo != null) { resultMetaClass = entityLoadInfo.getMetaClass(); pkValue = entityLoadInfo.getId(); } else { MetaProperty primaryKeyProperty = metadataTools.getPrimaryKeyProperty(resultMetaClass);
EntityLoadInfo info = EntityLoadInfo.parse(string); if (info == null) { throw new IllegalArgumentException("Invalid entity info: " + string); EntityManager em = persistence.getEntityManager(); View view = null; if (info.getViewName() != null) { view = metadata.getViewRepository().getView(info.getMetaClass(), info.getViewName()); Class javaClass = info.getMetaClass().getJavaClass(); if (view != null) { entity = em.find(javaClass, info.getId(), view); } else { entity = em.find(javaClass, info.getId());
protected Entity loadEntityInstance(EntityLoadInfo info) { Metadata metadata = AppBeans.get(Metadata.class); if (info.isNewEntity()) { return metadata.create(info.getMetaClass()); } LoadContext ctx = new LoadContext(info.getMetaClass()).setId(info.getId()); if (info.getViewName() != null) ctx.setView(info.getViewName()); Entity entity; try { DataManager dataManager = AppBeans.get(DataManager.class); entity = dataManager.load(ctx); } catch (Exception e) { throw new BpmException("Unable to load item: " + info, e); } return entity; } }
private Entity loadEntity(EntityLoadInfo entityLoadInfo) { DataManager dataManager = getDataManager(); return dataManager.load(getLoadContextForForEntityLoadInfo(entityLoadInfo.getMetaClass(), entityLoadInfo.getId())); }