/**
  * @param namespace
  * @see
  *     edu.utah.further.mdr.api.domain.asset.Asset#setNamespace(edu.utah.further.mdr.api.domain.asset.Asset)
  */
 @Override
 public void setNamespace(final Asset namespace) {
   this.namespace = (AssetTo) namespace;
   if (namespace != null) {
     this.namespaceId = namespace.getId();
   }
 }
 /**
  * @param type
  * @see
  *     edu.utah.further.mdr.api.domain.asset.Asset#setType(edu.utah.further.mdr.api.domain.asset.Asset)
  */
 @Override
 public void setType(final Asset type) {
   this.type = (AssetTo) type;
   if (type != null) {
     this.typeId = type.getId();
   }
 }
  /**
   * @param other
   * @return
   * @see
   *     edu.utah.further.mdr.api.domain.asset.Asset#copyFrom(edu.utah.further.mdr.api.domain.asset.Asset)
   */
  @Override
  public AssetToImpl copyFrom(final Asset other) {
    if (other == null) {
      return this;
    }

    // Deep-copy primitive fields and IDs, but do not deep-copy entity references
    this.id = other.getId();
    final Asset otherNamespace = other.getNamespace();
    if (otherNamespace != null) {
      this.namespaceId = otherNamespace.getId();
    }
    final Asset otherType = other.getType();
    if (otherType != null) {
      this.typeId = otherType.getId();
    }
    this.label = other.getLabel();
    this.description = other.getDescription();
    this.activationInfo = new ActivationInfoToImpl().copyFrom(other.getActivationInfo());

    // Deep-copy collection references (IDs) but do not deep-copy their elements
    // unless it's easy to deep-copy them too. Note: the hibernate entity (other) 's
    // version set must be eagerly fetched so that copying it here, outside the
    // Hibernate session, does not throw a lazy init exception.
    this.versionSet = newSortedSet();
    this.versionIdSet = newSortedSet();
    for (final Version version : other.getVersionSet()) {
      // TODO: add version TOs here in the future
      // addVersion(new VersionEntity().copyFrom(version));
      versionIdSet.add(version.getId());
    }

    return this;
  }