package org.dcache.srm.request; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; import org.dcache.srm.v2_2.TAccessLatency; public enum AccessLatency { ONLINE (TAccessLatency.ONLINE), NEARLINE (TAccessLatency.NEARLINE); private final TAccessLatency _latency; private static final ImmutableMap<TAccessLatency,AccessLatency> MAP; private static final String ERROR_MESSAGE; AccessLatency(TAccessLatency latency) { _latency = latency; } static { StringBuilder sb = new StringBuilder(); sb.append("Unknown AccessLatency: \"%s\"."); sb.append(" Supported values :"); Builder<TAccessLatency,AccessLatency> builder = new Builder<>(); for (AccessLatency value : values()) { builder.put(value._latency,value); sb.append(" \"").append(value._latency).append("\""); } MAP = builder.build(); ERROR_MESSAGE = sb.toString(); } public TAccessLatency toTAccessLatency() { return _latency; } public static AccessLatency fromTAccessLatency(TAccessLatency latency) { if ( latency == null ) { return null; } else { return MAP.get(latency); } } /** * this function provides wrapper of TAccessLatency.fromString * so that user gets better error handling */ public static AccessLatency fromString(String txt) throws IllegalArgumentException { try { TAccessLatency latency = TAccessLatency.fromString(txt); return fromTAccessLatency(latency); } catch (IllegalArgumentException e) { throw new IllegalArgumentException(String.format(ERROR_MESSAGE, txt)); } } }