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