@Override
  protected Attributes storeTo(HL7Application hl7App, String deviceDN, Attributes attrs) {
    super.storeTo(hl7App, deviceDN, attrs);
    if (!(hl7App instanceof ArchiveHL7Application)) return attrs;

    ArchiveHL7Application arcHL7App = (ArchiveHL7Application) hl7App;
    storeNotEmpty(attrs, "labeledURI", arcHL7App.getTemplatesURIs());
    return attrs;
  }
 @Override
 protected Attributes storeTo(Device device, Attributes attrs) {
   super.storeTo(device, attrs);
   if (!(device instanceof ArchiveDevice)) return attrs;
   ArchiveDevice arcDev = (ArchiveDevice) device;
   storeNotNull(attrs, "dcmFuzzyAlgorithmClass", arcDev.getFuzzyAlgorithmClass());
   storeNotDef(attrs, "dcmConfigurationStaleTimeout", arcDev.getConfigurationStaleTimeout(), 0);
   return attrs;
 }
 @Override
 protected Attributes storeTo(ApplicationEntity ae, String deviceDN, Attributes attrs) {
   super.storeTo(ae, deviceDN, attrs);
   if (!(ae instanceof ArchiveApplicationEntity)) return attrs;
   ArchiveApplicationEntity arcAE = (ArchiveApplicationEntity) ae;
   storeNotNull(attrs, "dcmFileSystemGroupID", arcAE.getFileSystemGroupID());
   storeNotNull(attrs, "dcmSpoolFilePathFormat", arcAE.getSpoolFilePathFormat());
   storeNotNull(attrs, "dcmStorageFilePathFormat", arcAE.getStorageFilePathFormat());
   storeNotNull(attrs, "dcmDigestAlgorithm", arcAE.getDigestAlgorithm());
   storeNotNull(attrs, "dcmExternalRetrieveAET", arcAE.getExternalRetrieveAET());
   storeNotEmpty(attrs, "dcmRetrieveAET", arcAE.getRetrieveAETs());
   storeNotDef(attrs, "dcmMatchUnknown", arcAE.isMatchUnknown(), false);
   storeNotDef(attrs, "dcmSendPendingCGet", arcAE.isSendPendingCGet(), false);
   storeNotDef(attrs, "dcmSendPendingCMoveInterval", arcAE.getSendPendingCMoveInterval(), 0);
   storeNotDef(
       attrs,
       "dcmSuppressWarningCoercionOfDataElements",
       arcAE.isSuppressWarningCoercionOfDataElements(),
       false);
   storeNotDef(attrs, "dcmStoreOriginalAttributes", arcAE.isStoreOriginalAttributes(), false);
   storeNotDef(
       attrs, "dcmPreserveSpoolFileOnFailure", arcAE.isPreserveSpoolFileOnFailure(), false);
   storeNotNull(attrs, "dcmModifyingSystem", arcAE.getModifyingSystem());
   storeNotDef(attrs, "dcmStgCmtDelay", arcAE.getStorageCommitmentDelay(), 0);
   storeNotDef(attrs, "dcmStgCmtMaxRetries", arcAE.getStorageCommitmentMaxRetries(), 0);
   storeNotDef(
       attrs,
       "dcmStgCmtRetryInterval",
       arcAE.getStorageCommitmentRetryInterval(),
       ArchiveApplicationEntity.DEF_RETRY_INTERVAL);
   storeNotEmpty(attrs, "dcmFwdMppsDestination", arcAE.getForwardMPPSDestinations());
   storeNotDef(attrs, "dcmFwdMppsMaxRetries", arcAE.getForwardMPPSMaxRetries(), 0);
   storeNotDef(
       attrs,
       "dcmFwdMppsRetryInterval",
       arcAE.getForwardMPPSRetryInterval(),
       ArchiveApplicationEntity.DEF_RETRY_INTERVAL);
   storeNotEmpty(attrs, "dcmIanDestination", arcAE.getIANDestinations());
   storeNotDef(attrs, "dcmIanMaxRetries", arcAE.getIANMaxRetries(), 0);
   storeNotDef(
       attrs,
       "dcmIanRetryInterval",
       arcAE.getIANRetryInterval(),
       ArchiveApplicationEntity.DEF_RETRY_INTERVAL);
   storeNotDef(attrs, "dcmShowEmptySeries", arcAE.isShowEmptySeries(), false);
   storeNotDef(attrs, "dcmShowEmptyStudy", arcAE.isShowEmptyStudy(), false);
   storeNotDef(attrs, "dcmReturnOtherPatientIDs", arcAE.isReturnOtherPatientIDs(), false);
   storeNotDef(attrs, "dcmReturnOtherPatientNames", arcAE.isReturnOtherPatientNames(), false);
   storeNotNull(attrs, "hl7PIXConsumerApplication", arcAE.getLocalPIXConsumerApplication());
   storeNotNull(attrs, "hl7PIXManagerApplication", arcAE.getRemotePIXManagerApplication());
   return attrs;
 }