public static String ads2Str(ArchiveDataSpecification ads) {
		StringBuilder sb = new StringBuilder(1024);
		sb.append("Archivanfrage:");
		sb.append("\n  Obj:       " + ads.getObject().getNameOrPidOrId());
		sb.append("\n  Atg:       " + ads.getDataDescription().getAttributeGroup().getNameOrPidOrId());
		sb.append("\n  Asp:       " + ads.getDataDescription().getAspect().getNameOrPidOrId());
		sb.append("\n  SV:        " + ads.getDataDescription().getSimulationVariant());
		String xx = (ads.getDataKinds().isOnline() ? "OA/" : "") + (ads.getDataKinds().isOnlineDelayed() ? "ON/" : "")
		            + (ads.getDataKinds().isRequested() ? "NA/" : "") + (ads.getDataKinds().isRequestedDelayed() ? "NN/" : "");
		sb.append("\n  DS-Arten:  " + Util.removeLastChar(xx));
		sb.append("\n  Bereich:   " + ads.getTimeSpec().getTimingType());
		sb.append("\n  relativ:   " + ads.getTimeSpec().isStartRelative());
		long start = ads.getTimeSpec().getIntervalStart();
		long end = ads.getTimeSpec().getIntervalEnd();
		if(!ads.getTimeSpec().isStartRelative()) {
			sb.append(
					"\n  von:       " + (ads.getTimeSpec().getTimingType().equals(TimingType.DATA_INDEX)
					                     ? (Util.dIdx2StrExt(start) + " (" + start + ")")
					                     : Util.timestrMillisFormatted(start))
			);
		}
		else {
			sb.append("\n  Anzahl:    " + start);
		}
		sb.append(
				"\n  bis:       " + (ads.getTimeSpec().getTimingType().equals(TimingType.DATA_INDEX)
				                     ? (Util.dIdx2StrExt(end) + " (" + end + ")")
				                     : Util.timestrMillisFormatted(end))
		);
		sb.append("\n  Anfrage:   " + ads.getRequestOption());
		sb.append("\n  ON/NN:     " + ads.getSortOrder());
		return sb.toString();
	}