All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.tentackle.ns.pdo.NumberPoolPersistenceImpl Maven / Gradle / Ivy

/**
 * Tentackle - http://www.tentackle.org
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */


package org.tentackle.ns.pdo;

import java.rmi.RemoteException;
import java.util.List;
import java.util.Objects;
import org.tentackle.log.Logger;
import org.tentackle.log.LoggerFactory;
import org.tentackle.misc.IdentifiableMap;
import org.tentackle.misc.TrackedArrayList;
import org.tentackle.misc.TrackedList;
import org.tentackle.ns.pdo.rmi.NumberPoolRemoteDelegate;
import org.tentackle.pdo.AbstractPersistentObject;
import org.tentackle.pdo.DomainContext;
import org.tentackle.pdo.PersistenceException;
import org.tentackle.pdo.Persistent;
import org.tentackle.pdo.PersistentDomainObject;
import org.tentackle.pdo.PersistentObjectClassVariables;
import org.tentackle.pdo.PersistentObjectService;
import org.tentackle.pdo.Session;
import org.tentackle.persist.PreparedStatementWrapper;
import org.tentackle.persist.ResultSetWrapper;
import org.tentackle.persist.StatementId;
import org.tentackle.sql.Backend;
import org.tentackle.validate.ValidationResult;
import org.tentackle.validate.ValidationScope;
import org.tentackle.validate.ValidationUtilities;



/**
 * Number Space persistence implementation.
 *
 * @author harald
 */
@PersistentObjectService(NumberPool.class)
public class NumberPoolPersistenceImpl extends AbstractPersistentObject implements NumberPoolPersistence {

  private static final long serialVersionUID = -1178387730540795339L;

  /**
   * logger for this class.
   */
  private static final Logger LOGGER = LoggerFactory.getLogger(NumberPoolPersistenceImpl.class);


  // @wurblet classVariables ClassVariables

  // //GEN-BEGIN:classVariables

  /** Variables common to all instances of NumberPoolPersistenceImpl. */
  @SuppressWarnings("unchecked")
  public static final PersistentObjectClassVariables CLASSVARIABLES =
            new PersistentObjectClassVariables<>(
                    NumberPool.class,
                    NumberPoolPersistenceImpl.class,
                    "npool",
                    null,
                    null);

  @Override
  public PersistentObjectClassVariables getClassVariables() {
    return CLASSVARIABLES;
  }

  // //GEN-END:classVariables

  // @wurblet fieldnames ColumnNames

  // //GEN-BEGIN:fieldnames


  /** database column name for 'name'. */
  public static final String CN_NAME = "name";

  /** database column name for 'realm'. */
  public static final String CN_REALM = "realm";

  /** database column name for 'description'. */
  public static final String CN_DESCRIPTION = "description";

  /** database column name for 'online'. */
  public static final String CN_ONLINE = "poolonline";

  /** database column name for 'lowWaterMark'. */
  public static final String CN_LOWWATERMARK = "lowmark";

  /** database column name for 'requestSize'. */
  public static final String CN_REQUESTSIZE = "reqsize";

  /** database column name for 'uplink'. */
  public static final String CN_UPLINK = "uplink";

  // //GEN-END:fieldnames

  // @wurblet declare Declare

  // //GEN-BEGIN:declare


  /** the number pool name. */
  @Persistent("the number pool name")
  private String name;
  /** true if name has been modified. */
  private boolean nameModified;
  /** the last persisted value of name. */
  private String namePersisted;

  /** pool realm, optional. */
  @Persistent("pool realm, optional")
  private String realm;
  /** true if realm has been modified. */
  private boolean realmModified;
  /** the last persisted value of realm. */
  private String realmPersisted;

  /** short description. */
  @Persistent("short description")
  private String description;
  /** true if description has been modified. */
  private boolean descriptionModified;
  /** the last persisted value of description. */
  private String descriptionPersisted;

  /** true if online, else offline. */
  @Persistent("true if online, else offline")
  private boolean online;
  /** true if online has been modified. */
  private boolean onlineModified;
  /** the last persisted value of online. */
  private boolean onlinePersisted;

  /** minimum number count before request to fill up from uplink, 0 if disable. */
  @Persistent("minimum number count before request to fill up from uplink, 0 if disable")
  private long lowWaterMark;
  /** true if lowWaterMark has been modified. */
  private boolean lowWaterMarkModified;
  /** the last persisted value of lowWaterMark. */
  private long lowWaterMarkPersisted;

  /** number count to request from uplink, 0 if disable. */
  @Persistent("number count to request from uplink, 0 if disable")
  private long requestSize;
  /** true if requestSize has been modified. */
  private boolean requestSizeModified;
  /** the last persisted value of requestSize. */
  private long requestSizePersisted;

  /** uplink configuration (optional). */
  @Persistent("uplink configuration (optional)")
  private String uplink;
  /** true if uplink has been modified. */
  private boolean uplinkModified;
  /** the last persisted value of uplink. */
  private String uplinkPersisted;

  // //GEN-END:declare


  /**
   * Creates a number space.
   *
   * @param pdo the number space PDO
   * @param context the domain context
   */
  public NumberPoolPersistenceImpl (NumberPool pdo, DomainContext context)    {
    super(pdo, context);
  }

  /**
   * Creates a number space with a session only.
   *
   * @param pdo the number space PDO
   * @param session the session
   */
  public NumberPoolPersistenceImpl(NumberPool pdo, Session session) {
    super(pdo, session);
  }

  /**
   * Creates a number space without domain context or session.
   *
   * @param pdo the number space PDO
   */
  public NumberPoolPersistenceImpl(NumberPool pdo) {
    super(pdo);
  }

  /**
   * Creates a number space without domain context or session.
   */
  public NumberPoolPersistenceImpl() {
    super();
  }

  @Override
  public boolean isUpdatingSerialEvenIfNotModified() {
    // don't update the pool if only ranges changed (even though it's a root entity)
    return false;
  }

  // @wurblet methods MethodsImpl

  // //GEN-BEGIN:methods


  @Override
  public NumberPoolRemoteDelegate getRemoteDelegate() {
    return (NumberPoolRemoteDelegate) super.getRemoteDelegate();
  }

  /**
   * Object is a root entity.
   * @return true
   */
  @Override
  public boolean isRootEntity() {
    return true;
  }

  /**
   * Overridden cause of "--tracked".
   * @return true = setters check for modification
   */
  @Override
  public boolean isTracked() {
    return true;    // invoking isModified() is ok
  }

  /**
   * Overridden cause of "--attracked".
   */
  @Override
  public void setModified(boolean modified) {
    super.setModified(modified);
    if (!modified) {
      nameModified = false;
      namePersisted = name;
      realmModified = false;
      realmPersisted = realm;
      descriptionModified = false;
      descriptionPersisted = description;
      onlineModified = false;
      onlinePersisted = online;
      lowWaterMarkModified = false;
      lowWaterMarkPersisted = lowWaterMark;
      requestSizeModified = false;
      requestSizePersisted = requestSize;
      uplinkModified = false;
      uplinkPersisted = uplink;
    }
  }

  /**
   * Overridden cause of "--fulltracked".
   */
  @Override
  public boolean differsPersisted() {
    return super.differsPersisted()
           || !Objects.equals(namePersisted, name)
           || !Objects.equals(realmPersisted, realm)
           || !Objects.equals(descriptionPersisted, description)
           || onlinePersisted != online
           || lowWaterMarkPersisted != lowWaterMark
           || requestSizePersisted != requestSize
           || !Objects.equals(uplinkPersisted, uplink)
           ;
  }

  @Override
  public void getFields(ResultSetWrapper rs) {
    super.getFields(rs);
    if (rs.configureSection(CLASSVARIABLES)) {
      rs.configureColumn(CN_NAME);
      rs.configureColumn(CN_REALM);
      rs.configureColumn(CN_DESCRIPTION);
      rs.configureColumn(CN_ONLINE);
      rs.configureColumn(CN_LOWWATERMARK);
      rs.configureColumn(CN_REQUESTSIZE);
      rs.configureColumn(CN_UPLINK);
      rs.configureColumn(CN_ID);
      rs.configureColumn(CN_SERIAL);
    }
    if (rs.getRow() <= 0) {
      throw new PersistenceException(getSession(), "no valid row");
    }
    name = rs.getString();
    realm = rs.getString(true);
    description = rs.getString();
    online = rs.getBoolean();
    lowWaterMark = rs.getLong();
    requestSize = rs.getLong();
    uplink = rs.getString();
    setId(rs.getLong());
    setSerial(rs.getLong());
  }

  @Override
  public int setFields(PreparedStatementWrapper st) {
    int ndx = super.setFields(st);
    st.setString(++ndx, name);
    st.setString(++ndx, realm, true);
    st.setString(++ndx, description);
    st.setBoolean(++ndx, online);
    st.setLong(++ndx, lowWaterMark);
    st.setLong(++ndx, requestSize);
    st.setString(++ndx, uplink);
    st.setLong(++ndx, getId());
    st.setLong(++ndx, getSerial());
    return ndx;
  }

  @Override
  public String createInsertSql() {
    return Backend.SQL_INSERT_INTO + getTableName() + Backend.SQL_LEFT_PARENTHESIS +
           CN_NAME + Backend.SQL_COMMA +
           CN_REALM + Backend.SQL_COMMA +
           CN_DESCRIPTION + Backend.SQL_COMMA +
           CN_ONLINE + Backend.SQL_COMMA +
           CN_LOWWATERMARK + Backend.SQL_COMMA +
           CN_REQUESTSIZE + Backend.SQL_COMMA +
           CN_UPLINK + Backend.SQL_COMMA +
           CN_ID + Backend.SQL_COMMA +
           CN_SERIAL +
           Backend.SQL_INSERT_VALUES +
           Backend.SQL_PAR_COMMA +
           Backend.SQL_PAR_COMMA +
           Backend.SQL_PAR_COMMA +
           Backend.SQL_PAR_COMMA +
           Backend.SQL_PAR_COMMA +
           Backend.SQL_PAR_COMMA +
           Backend.SQL_PAR_COMMA +
           Backend.SQL_PAR_COMMA +
           Backend.SQL_PAR + Backend.SQL_RIGHT_PARENTHESIS;
  }

  @Override
  public String createUpdateSql() {
    return Backend.SQL_UPDATE + getTableName() + Backend.SQL_SET +
           CN_NAME + Backend.SQL_EQUAL_PAR_COMMA +
           CN_REALM + Backend.SQL_EQUAL_PAR_COMMA +
           CN_DESCRIPTION + Backend.SQL_EQUAL_PAR_COMMA +
           CN_ONLINE + Backend.SQL_EQUAL_PAR_COMMA +
           CN_LOWWATERMARK + Backend.SQL_EQUAL_PAR_COMMA +
           CN_REQUESTSIZE + Backend.SQL_EQUAL_PAR_COMMA +
           CN_UPLINK + Backend.SQL_EQUAL_PAR_COMMA +
           CN_SERIAL + Backend.SQL_EQUAL + CN_SERIAL + Backend.SQL_PLUS_ONE +
           Backend.SQL_WHERE + CN_ID + Backend.SQL_EQUAL_PAR +
           Backend.SQL_AND + CN_SERIAL + Backend.SQL_EQUAL_PAR;
  }

  /**
   * Gets the attribute name.
   *
   * @return the number pool name
   */
  @Override
  public String getName()    {
    return name;
  }

  /**
   * Sets the attribute name.
   *
   * @param name the number pool name
   */
  @Override
  public void setName(String name) {
    assertMutable();
    if (!Objects.equals(this.name, name)) {
      setModified(true);
      nameModified = true;
      firePropertyChange(AN_NAME, this.name, name);
    }
    this.name = name;
  }

  /**
   * Gets the modification state of name.
   *
   * @return true if name has been modified
   */
  @Override
  public boolean isNameModified() {
    return nameModified;
  }

  /**
   * Gets the last persisted value of name.
   *
   * @return the last persisted value
   */
  @Override
  public String getNamePersisted() {
    return namePersisted;
  }

  /**
   * Gets the attribute realm.
   *
   * @return pool realm, optional
   */
  @Override
  public String getRealm()    {
    return realm;
  }

  /**
   * Sets the attribute realm.
   *
   * @param realm pool realm, optional
   */
  @Override
  public void setRealm(String realm) {
    assertMutable();
    if (!Objects.equals(this.realm, realm)) {
      setModified(true);
      realmModified = true;
      firePropertyChange(AN_REALM, this.realm, realm);
    }
    this.realm = realm;
  }

  /**
   * Gets the modification state of realm.
   *
   * @return true if realm has been modified
   */
  @Override
  public boolean isRealmModified() {
    return realmModified;
  }

  /**
   * Gets the last persisted value of realm.
   *
   * @return the last persisted value
   */
  @Override
  public String getRealmPersisted() {
    return realmPersisted;
  }

  /**
   * Gets the attribute description.
   *
   * @return short description
   */
  @Override
  public String getDescription()    {
    return description;
  }

  /**
   * Sets the attribute description.
   *
   * @param description short description
   */
  @Override
  public void setDescription(String description) {
    assertMutable();
    if (!Objects.equals(this.description, description)) {
      setModified(true);
      descriptionModified = true;
      firePropertyChange(AN_DESCRIPTION, this.description, description);
    }
    this.description = description;
  }

  /**
   * Gets the modification state of description.
   *
   * @return true if description has been modified
   */
  @Override
  public boolean isDescriptionModified() {
    return descriptionModified;
  }

  /**
   * Gets the last persisted value of description.
   *
   * @return the last persisted value
   */
  @Override
  public String getDescriptionPersisted() {
    return descriptionPersisted;
  }

  /**
   * Gets the attribute online.
   *
   * @return true if online, else offline
   */
  @Override
  public boolean isOnline()    {
    return online;
  }

  /**
   * Sets the attribute online.
   *
   * @param online true if online, else offline
   */
  @Override
  public void setOnline(boolean online) {
    assertMutable();
    if (this.online != online) {
      setModified(true);
      onlineModified = true;
      firePropertyChange(AN_ONLINE, this.online, online);
    }
    this.online = online;
  }

  /**
   * Gets the modification state of online.
   *
   * @return true if online has been modified
   */
  @Override
  public boolean isOnlineModified() {
    return onlineModified;
  }

  /**
   * Gets the last persisted value of online.
   *
   * @return the last persisted value
   */
  @Override
  public boolean isOnlinePersisted() {
    return onlinePersisted;
  }

  /**
   * Gets the attribute lowWaterMark.
   *
   * @return minimum number count before request to fill up from uplink, 0 if disable
   */
  @Override
  public long getLowWaterMark()    {
    return lowWaterMark;
  }

  /**
   * Sets the attribute lowWaterMark.
   *
   * @param lowWaterMark minimum number count before request to fill up from uplink, 0 if disable
   */
  @Override
  public void setLowWaterMark(long lowWaterMark) {
    assertMutable();
    if (this.lowWaterMark != lowWaterMark) {
      setModified(true);
      lowWaterMarkModified = true;
      firePropertyChange(AN_LOWWATERMARK, this.lowWaterMark, lowWaterMark);
    }
    this.lowWaterMark = lowWaterMark;
  }

  /**
   * Gets the modification state of lowWaterMark.
   *
   * @return true if lowWaterMark has been modified
   */
  @Override
  public boolean isLowWaterMarkModified() {
    return lowWaterMarkModified;
  }

  /**
   * Gets the last persisted value of lowWaterMark.
   *
   * @return the last persisted value
   */
  @Override
  public long getLowWaterMarkPersisted() {
    return lowWaterMarkPersisted;
  }

  /**
   * Gets the attribute requestSize.
   *
   * @return number count to request from uplink, 0 if disable
   */
  @Override
  public long getRequestSize()    {
    return requestSize;
  }

  /**
   * Sets the attribute requestSize.
   *
   * @param requestSize number count to request from uplink, 0 if disable
   */
  @Override
  public void setRequestSize(long requestSize) {
    assertMutable();
    if (this.requestSize != requestSize) {
      setModified(true);
      requestSizeModified = true;
      firePropertyChange(AN_REQUESTSIZE, this.requestSize, requestSize);
    }
    this.requestSize = requestSize;
  }

  /**
   * Gets the modification state of requestSize.
   *
   * @return true if requestSize has been modified
   */
  @Override
  public boolean isRequestSizeModified() {
    return requestSizeModified;
  }

  /**
   * Gets the last persisted value of requestSize.
   *
   * @return the last persisted value
   */
  @Override
  public long getRequestSizePersisted() {
    return requestSizePersisted;
  }

  /**
   * Gets the attribute uplink.
   *
   * @return uplink configuration (optional)
   */
  @Override
  public String getUplink()    {
    return uplink;
  }

  /**
   * Sets the attribute uplink.
   *
   * @param uplink uplink configuration (optional)
   */
  @Override
  public void setUplink(String uplink) {
    assertMutable();
    if (!Objects.equals(this.uplink, uplink)) {
      setModified(true);
      uplinkModified = true;
      firePropertyChange(AN_UPLINK, this.uplink, uplink);
    }
    this.uplink = uplink;
  }

  /**
   * Gets the modification state of uplink.
   *
   * @return true if uplink has been modified
   */
  @Override
  public boolean isUplinkModified() {
    return uplinkModified;
  }

  /**
   * Gets the last persisted value of uplink.
   *
   * @return the last persisted value
   */
  @Override
  public String getUplinkPersisted() {
    return uplinkPersisted;
  }

  /**
   * Updates the attributes in snapshot object.
* The snapshot object is assumed to be a clone of this object. * * @param snapshot the snapshot */ protected void createAttributesInSnapshot(NumberPoolPersistenceImpl snapshot) { super.createAttributesInSnapshot(snapshot); } /** * Copies all attributes from a snapshot back to this object. * * @param snapshot the snapshot object */ protected void revertAttributesToSnapshot(NumberPoolPersistenceImpl snapshot) { super.revertAttributesToSnapshot(snapshot); // the number pool name name = snapshot.name; nameModified = snapshot.nameModified; namePersisted = snapshot.namePersisted; // pool realm, optional realm = snapshot.realm; realmModified = snapshot.realmModified; realmPersisted = snapshot.realmPersisted; // short description description = snapshot.description; descriptionModified = snapshot.descriptionModified; descriptionPersisted = snapshot.descriptionPersisted; // true if online, else offline online = snapshot.online; onlineModified = snapshot.onlineModified; onlinePersisted = snapshot.onlinePersisted; // minimum number count before request to fill up from uplink, 0 if disable lowWaterMark = snapshot.lowWaterMark; lowWaterMarkModified = snapshot.lowWaterMarkModified; lowWaterMarkPersisted = snapshot.lowWaterMarkPersisted; // number count to request from uplink, 0 if disable requestSize = snapshot.requestSize; requestSizeModified = snapshot.requestSizeModified; requestSizePersisted = snapshot.requestSizePersisted; // uplink configuration (optional) uplink = snapshot.uplink; uplinkModified = snapshot.uplinkModified; uplinkPersisted = snapshot.uplinkPersisted; } // selects by unique domain key // @wurblet selectByUniqueDomainKey PdoSelectUnique name //
//GEN-END:methods // //GEN-BEGIN:selectByUniqueDomainKey private static final StatementId SELECT_BY_UNIQUE_DOMAIN_KEY_STMT = new StatementId(); @Override public NumberPool selectByUniqueDomainKey(String name) { if (getSession().isRemote()) { // invoke remote method try { NumberPool obj = getRemoteDelegate().selectByUniqueDomainKey(getDomainContext(), name); configureRemoteObject(getDomainContext(), obj); return obj; } catch (RemoteException e) { throw PersistenceException.createFromRemoteException(this, e); } } // else: local mode PreparedStatementWrapper st = getPreparedStatement(SELECT_BY_UNIQUE_DOMAIN_KEY_STMT, () -> { StringBuilder sql = createSelectAllInnerSql(); sql.append(Backend.SQL_AND); sql.append(getColumnName(CN_NAME)); sql.append(Backend.SQL_EQUAL_PAR); getBackend().buildSelectSql(sql, false, 0, 0); return sql.toString(); } ); int ndx = 1; st.setString(ndx++, name); return executeFirstPdoQuery(st); } // //GEN-END:selectByUniqueDomainKey // @wurblet relations PdoRelations // //GEN-BEGIN:relations /** * # Relations for NumberPool: * * NumberPool: composite list of NumberRange numberRangeList via NumberRange#numberPoolId (numberRange) */ // NumberPool: composite list of NumberRange numberRangeList via NumberRange#numberPoolId (numberRange) @Persistent("numberRange") private TrackedList numberRangeList; private boolean numberRangeListLoaded; private transient TrackedList numberRangeListSnapshot; /** * Gets numberRangeList via NumberRange#numberPoolId. * * @return numberRangeList numberRange */ @Override public TrackedList getNumberRangeList() { if (!numberRangeListLoaded) { numberRangeList = isNew() ? new TrackedArrayList<>(false) : on(NumberRange.class).selectByNumberPoolId(getId()); for (NumberRange obj: numberRangeList) { obj.setNumberPool(pdo()); } if (isImmutable()) { numberRangeList.setImmutable(true); } numberRangeListLoaded = true; } return numberRangeList; } /** * Gets numberRangeList without performing a select if not loaded. * * @return numberRangeList numberRange */ public TrackedList getNumberRangeListBlunt() { if (!numberRangeListLoaded) { numberRangeList = new TrackedArrayList<>(false); numberRangeListLoaded = true; } return numberRangeList; } /** * Sets the session in this and all related objects. * * @param session the session */ @Override public void setSession(Session session) { super.setSession(session); session.applyTo(numberRangeList); } /** * Sets the context in this and all related objects. * * @param context the domain context */ @Override public void setDomainContext(DomainContext context) { super.setDomainContext(context); context.applyTo(numberRangeList); } /** * Deletes all referencing composite relations from storage. */ @Override public void deleteReferencingRelations() { super.deleteReferencingRelations(); deleteReferencingRelations(true); } /** * Deletes referencing composite relations. * This method is invoked from deleteReferencingRelations() or saveReferencingRelations(). * When invoked from saveReferencingRelations() lazy relations not * already loaded will be considered to be unchanged, i.e. * need no update or insert. * * @param delete is true if invoked from deleteReferencingRelations() */ private void deleteReferencingRelations(boolean delete) { // NumberPool: composite list of NumberRange numberRangeList via NumberRange#numberPoolId (numberRange). numberRange if (delete) { delete(getNumberRangeList()); } if (numberRangeList != null && numberRangeList.isSomeRemoved()) { delete(numberRangeList.getRemovedObjects()); } } /** * Saves composite relations referencing NumberPool. */ @Override public void saveReferencingRelations(boolean update) { super.saveReferencingRelations(update); if (update) { deleteReferencingRelations(false); } // NumberPool: composite list of NumberRange numberRangeList via NumberRange#numberPoolId (numberRange). numberRange if (numberRangeList != null) { getDomainContext().applyTo(numberRangeList); for (NumberRange obj: numberRangeList) { obj.setNumberPool(pdo()); } save(numberRangeList, true); } } /** * Validates the object. * * @param validationPath the validation path * @param scope the validation scope * @return the list of validation results, never null */ @Override public List validate(String validationPath, ValidationScope scope) { List results = super.validate(validationPath, scope); // NumberPool: composite list of NumberRange numberRangeList via NumberRange#numberPoolId (numberRange). numberRange if (numberRangeList != null) { results.addAll(ValidationUtilities.getInstance().validateCollection( numberRangeList, validationPath + ".numberRangeList", scope)); } return results; } /** * Sets the mutable flag for this object and all its components. * * @param immutable true if object is immutable */ @Override public void setImmutable(boolean immutable) { super.setImmutable(immutable); // NumberPool: composite list of NumberRange numberRangeList via NumberRange#numberPoolId (numberRange). numberRange if (numberRangeList != null) { numberRangeList.setImmutable(immutable); } } /** * Checks composite relations for modification recursively. * * @return true if this or any composition is modified */ @Override public boolean isModified() { return super.isModified() // NumberPool: composite list of NumberRange numberRangeList via NumberRange#numberPoolId (numberRange). numberRange || isModified(numberRangeList) ; } /** * This is a composite object. */ @Override public boolean isComposite() { return true; } /** * Loads components.
* * @param onlyLoaded true if return only already loaded components * @return the map of all components, including this object. */ @Override public IdentifiableMap> loadComponents(boolean onlyLoaded) { IdentifiableMap> components = new IdentifiableMap<>(); addComponents(components, onlyLoaded); return components; } @Override public int addComponents(IdentifiableMap> components, boolean onlyLoaded) { int count = 0; count += super.addComponents(components, onlyLoaded); // NumberPool: composite list of NumberRange numberRangeList via NumberRange#numberPoolId (numberRange). numberRange if (!onlyLoaded || numberRangeListLoaded) { count += addComponents(components, getNumberRangeList(), onlyLoaded); } return count; } /** * Inserts this object and all components. */ @Override public void insertPlainWithComponents() { insertPlain(); // NumberPool: composite list of NumberRange numberRangeList via NumberRange#numberPoolId (numberRange). numberRange insertPlainWithComponents(getNumberRangeList()); } /** * Deletes this object and all components. */ @Override public void deletePlainWithComponents() { // NumberPool: composite list of NumberRange numberRangeList via NumberRange#numberPoolId (numberRange). numberRange deletePlainWithComponents(getNumberRangeList()); deletePlain(); } /** * Marks this object and all its components to be deleted. */ @Override public void markDeleted() { super.markDeleted(); // NumberPool: composite list of NumberRange numberRangeList via NumberRange#numberPoolId (numberRange). numberRange markDeleted(numberRangeList); } /** * Updates the components in snapshot object.
* The snapshot object is assumed to be a clone of this object. * * @param snapshot the snapshot */ @SuppressWarnings("unchecked") protected void createComponentsInSnapshot(NumberPoolPersistenceImpl snapshot) { super.createComponentsInSnapshot(snapshot); // NumberPool: composite list of NumberRange numberRangeList via NumberRange#numberPoolId (numberRange). numberRange if (numberRangeList != null) { snapshot.numberRangeListSnapshot = numberRangeList.createSnapshot(); } } /** * Reverts all components of this object to a given snapshot. * * @param snapshot the snapshot object */ @SuppressWarnings("unchecked") protected void revertComponentsToSnapshot(NumberPoolPersistenceImpl snapshot) { super.revertComponentsToSnapshot(snapshot); // NumberPool: composite list of NumberRange numberRangeList via NumberRange#numberPoolId (numberRange). numberRange numberRangeList = snapshot.numberRangeList; if (numberRangeList != null) { numberRangeList.revertToSnapshot(snapshot.numberRangeListSnapshot); } numberRangeListLoaded = snapshot.numberRangeListLoaded; } //
//GEN-END:relations // @wurblet selectByNameRealm PdoSelectUnique name realm // //GEN-BEGIN:selectByNameRealm private static final StatementId SELECT_BY_NAME_REALM_STMT = new StatementId(); @Override public NumberPool selectByNameRealm(String name, String realm) { if (getSession().isRemote()) { // invoke remote method try { NumberPool obj = getRemoteDelegate().selectByNameRealm(getDomainContext(), name, realm); configureRemoteObject(getDomainContext(), obj); return obj; } catch (RemoteException e) { throw PersistenceException.createFromRemoteException(this, e); } } // else: local mode PreparedStatementWrapper st = getPreparedStatement(SELECT_BY_NAME_REALM_STMT, () -> { StringBuilder sql = createSelectAllInnerSql(); sql.append(Backend.SQL_AND); sql.append(getColumnName(CN_NAME)); sql.append(Backend.SQL_EQUAL_PAR); sql.append(Backend.SQL_AND); sql.append(getColumnName(CN_REALM)); sql.append(Backend.SQL_EQUAL_PAR); getBackend().buildSelectSql(sql, false, 0, 0); return sql.toString(); } ); int ndx = 1; st.setString(ndx++, name); st.setString(ndx++, realm, true); return executeFirstPdoQuery(st); } // //GEN-END:selectByNameRealm @Override public void reloadRanges() { numberRangeListLoaded = false; numberRangeList = null; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy