/** * Create a new entry with a given type and depth. */ public BatchedBeanHolder(BatchControl control, BeanDescriptor<?> beanDescriptor, int order) { this.control = control; this.shortDesc = beanDescriptor.getName() + ":" + order; this.order = order; }
/** * Return the short bean name. */ String getBeanName() { return desc.getName(); }
/** * Return a summary description of this query. */ public String getSummary() { StringBuilder sb = new StringBuilder(80); sb.append(type).append(" exeMicros[").append(executionTimeMicros) .append("] rows[").append(rowCount) .append("] type[").append(desc.getName()) .append("] predicates[").append(predicates.getLogWhereSql()) .append("] bind[").append(bindLog).append("]"); return sb.toString(); }
/** * Return a summary description of this query. */ protected String getSummary() { StringBuilder sb = new StringBuilder(80); sb.append("FindAttr exeMicros[").append(executionTimeMicros) .append("] rows[").append(rowCount) .append("] type[").append(desc.getName()) .append("] predicates[").append(predicates.getLogWhereSql()) .append("] bind[").append(bindLog).append("]"); return sb.toString(); }
private void trimQueryPlans() { long lastUsed = System.currentTimeMillis() - (queryPlanTTLSeconds * 1000L); for (BeanDescriptor<?> descriptor : immutableDescriptorList) { if (!descriptor.isEmbedded()) { List<CQueryPlan> trimmedPlans = descriptor.trimQueryPlans(lastUsed); if (!trimmedPlans.isEmpty()) { logger.trace("trimmed {} query plans for type:{}", trimmedPlans.size(), descriptor.getName()); } } } }
@Override public String getDeployWord(String expression) { if (expression.equalsIgnoreCase(beanDescriptor.getName())) { return beanDescriptor.getBaseTable(); } ElPropertyDeploy elProp = beanDescriptor.getElPropertyDeploy(expression); if (elProp != null) { return elProp.getDbColumn(); } else { return null; } }
/** * Return the full name taking into account inheritance. */ public String rootName() { if (inheritInfo != null && !inheritInfo.isRoot()) { return inheritInfo.getRoot().desc().getName(); } return name; }
/** * Restore draft beans to match live beans given the query. */ @Override public <T> List<T> draftRestore(Query<T> query, Transaction transaction) { Class<T> beanType = query.getBeanType(); BeanDescriptor<T> desc = server.getBeanDescriptor(beanType); DraftHandler<T> draftHandler = new DraftHandler<>(desc, transaction); List<T> liveBeans = draftHandler.fetchSourceBeans(query, false); PUB.debug("draftRestore [{}] count[{}]", desc.getName(), liveBeans.size()); if (liveBeans.isEmpty()) { return Collections.emptyList(); } draftHandler.fetchDestinationBeans(liveBeans, true); BeanManager<T> mgr = beanDescriptorManager.getBeanManager(beanType); for (T liveBean : liveBeans) { T draftBean = draftHandler.publishToDestinationBean(liveBean); // reset @DraftDirty and @DraftReset properties draftHandler.resetDraft(draftBean); PUB.trace("draftRestore bean [{}] id[{}]", desc.getName(), draftHandler.getId()); update(createRequest(draftBean, transaction, null, mgr, Type.UPDATE, Flags.RECURSE)); } PUB.debug("draftRestore - complete for [{}]", desc.getName()); return draftHandler.getDrafts(); }
PUB.debug("publish [{}] count[{}]", desc.getName(), draftBeans.size()); if (draftBeans.isEmpty()) { return Collections.emptyList(); PUB.trace("publish bean [{}] id[{}] type[{}]", desc.getName(), draftHandler.getId(), persistType); PUB.debug("publish - complete for [{}]", desc.getName()); return livePublish;
@Override public void markAsDeleted(EntityBean bean) { if (softDeleteProperty == null) { Object id = getId(bean); logger.info("(Lazy) loading unsuccessful for type:{} id:{} - expecting when bean has been deleted", getName(), id); bean._ebean_getIntercept().setLazyLoadFailure(id); } else { setSoftDeleteValue(bean); bean._ebean_getIntercept().setLoaded(); setAllLoaded(bean); } }
private void logSummary() { String draft = (beanDescriptor.isDraftable() && !publish) ? " draft[true]" : ""; String name = beanDescriptor.getName(); switch (type) { case INSERT: transaction.logSummary("Inserted [" + name + "] [" + idValue + "]" + draft); break; case UPDATE: transaction.logSummary("Updated [" + name + "] [" + idValue + "]" + draft); break; case DELETE: transaction.logSummary("Deleted [" + name + "] [" + idValue + "]" + draft); break; case DELETE_SOFT: transaction.logSummary("SoftDelete [" + name + "] [" + idValue + "]" + draft); break; default: break; } }
String idSql = desc.getIdBinderIdSql(query.getAlias()); if (idSql.isEmpty()) { throw new IllegalStateException("Executing FindById query on entity bean " + desc.getName() + " that doesn't have an @Id property??");
throw new UnsupportedOperationException("cannot create entity bean for abstract entity " + getName());
/** * Execute a query fetching the missing (unloaded) foreign keys. We need to * fetch these key values before the parent bean is deleted. */ void queryForeignKeys() { BeanDescriptor<?> descriptor = request.getBeanDescriptor(); SpiQuery<?> q = (SpiQuery<?>) server.createQuery(descriptor.getBeanType()); Object id = request.getBeanId(); StringBuilder sb = new StringBuilder(30); for (BeanPropertyAssocOne<?> aPropList : propList) { sb.append(aPropList.getName()).append(","); } // run query in a separate persistence context q.setPersistenceContext(new DefaultPersistenceContext()); q.setPersistenceContextScope(PersistenceContextScope.QUERY); q.setAutoTune(false); q.select(sb.toString()); q.setIncludeSoftDeletes(); q.where().idEq(id); SpiTransaction t = request.getTransaction(); if (t.isLogSummary()) { t.logSummary("-- Ebean fetching foreign key values for delete of " + descriptor.getName() + " id:" + id); } beanWithForeignKeys = (EntityBean) server.findOne(q, t); }
ElPropertyValue elGetValue = rootDesc.getElGetValue(path); if (elGetValue == null) { logger.warn("AutoTune: Can't find join for path[" + path + "] for " + rootDesc.getName()); return; } else { BeanProperty beanProp = desc.findPropertyFromPath(propName); if (beanProp == null) { logger.warn("AutoTune: Can't find property[" + propName + "] for " + desc.getName());
/** * Return a summary description of this query. */ protected String getSummary() { StringBuilder sb = new StringBuilder(80); sb.append("FindAttr exeMicros[").append(executionTimeMicros) .append("] rows[").append(rowCount) .append("] type[").append(desc.getName()) .append("] predicates[").append(predicates.getLogWhereSql()) .append("] bind[").append(bindLog).append("]"); return sb.toString(); }
/** * Return a summary description of this query. */ public String getSummary() { StringBuilder sb = new StringBuilder(80); sb.append(type).append(" exeMicros[").append(executionTimeMicros) .append("] rows[").append(rowCount) .append("] type[").append(desc.getName()) .append("] predicates[").append(predicates.getLogWhereSql()) .append("] bind[").append(bindLog).append("]"); return sb.toString(); }
q.where().idIn(idList); if (t.isLogSummary()) { t.logSummary("-- DeleteById of " + descriptor.getName() + " ids[" + idList + "] requires fetch of foreign key values"); q.where().idEq(id); if (t.isLogSummary()) { t.logSummary("-- DeleteById of " + descriptor.getName() + " id[" + id + "] requires fetch of foreign key values"); if (t.isLogSummary()) { if (idList != null) { t.logSummary("-- Deleting " + descriptor.getName() + " Ids: " + idList); } else { t.logSummary("-- Deleting " + descriptor.getName() + " Id: " + id);
@Override public String getDeployWord(String expression) { if (expression.equalsIgnoreCase(beanDescriptor.getName())) { return beanDescriptor.getBaseTable(); } ElPropertyDeploy elProp = beanDescriptor.getElPropertyDeploy(expression); if (elProp != null) { return elProp.getDbColumn(); } else { return null; } }