package jp.co.worksap.workspace.ide.eclipse; import java.nio.charset.Charset; import java.util.Collections; import java.util.List; import java.util.Map; import javax.annotation.Nonnull; import jp.co.worksap.workspace.common.OperatingSystem; import jp.co.worksap.workspace.common.OperatingSystemKeyDeserializer; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.Setter; import org.codehaus.jackson.map.annotate.JsonDeserialize; import com.google.common.base.Charsets; import com.google.common.base.Optional; @Data @Setter(AccessLevel.PRIVATE) @NoArgsConstructor @AllArgsConstructor public class EclipseConfiguration { private Version version; private String defaultCharset; private List<EclipsePlugin> plugin; private List<String> pluginRepository; @JsonDeserialize(keyUsing = OperatingSystemKeyDeserializer.class) private Map<OperatingSystem, String> downloadFrom; private FindBugsPluginConfiguration findbugs; private JavaFormatterConfiguration javaFormat; @Nonnull public Charset getDefaultCharset() { if (defaultCharset == null) { return Charsets.UTF_8; } else { return Charset.forName(defaultCharset); } } @Nonnull public List<EclipsePlugin> getPlugin() { if (plugin == null) { return Collections.emptyList(); } else { return Collections.unmodifiableList(plugin); } } @Nonnull public List<String> getPluginRepository() { if (pluginRepository == null) { return Collections.emptyList(); } else { return Collections.unmodifiableList(pluginRepository); } } @Nonnull public Map<OperatingSystem, String> getDownloadFrom() { if (downloadFrom == null) { return Collections.emptyMap(); } else { return Collections.unmodifiableMap(downloadFrom); } } @Nonnull public Optional<FindBugsPluginConfiguration> getFindbugs() { return Optional.fromNullable(findbugs); } @Nonnull public Optional<JavaFormatterConfiguration> getJavaFormat() { return Optional.fromNullable(javaFormat); } }