/******************************************************************************* * * Copyright (c) 2010-2011 Sonatype, Inc. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * * * * *******************************************************************************/ package org.hudsonci.maven.model.config; import java.util.Iterator; import org.hudsonci.maven.model.config.DocumentAttributeDTO; import org.hudsonci.maven.model.config.DocumentDTO; /** * Helper for {@link DocumentDTO}. * * @author <a href="mailto:jason@planet57.com">Jason Dillon</a> * @since 2.1.0 */ public class DocumentDTOHelper { public static String asString(final DocumentDTO source) { assert source != null; StringBuilder buff = new StringBuilder(); buff.append("{id=").append(source.getId()) .append(",name=").append(source.getName()) .append(",type=").append(source.getType()); if (source.getDescription() != null) { buff.append(",description=").append(source.getDescription()); } if (source.getContent() != null) { buff.append(",content-size=").append(source.getContent().length()); } if (source.getAttributes() != null) { buff.append(",attributes=").append(source.getAttributes()); } buff.append("}"); return buff.toString(); } private static String keyFor(final Object name) { String key; if (name instanceof Enum) { key = ((Enum)name).name(); } else { key = String.valueOf(name); } return key; } public static void setAttribute(final DocumentDTO source, final Object name, final Object value) { assert source != null; assert name != null; // value == null? String key = keyFor(name); // Find existing attribute and remove it Iterator<DocumentAttributeDTO> iter = source.getAttributes().iterator(); while (iter.hasNext()) { DocumentAttributeDTO attr = iter.next(); if (key.equals(attr.getName())) { iter.remove(); break; } } // Add new attribute at the end source.withAttributes(new DocumentAttributeDTO().withName(key).withValue(String.valueOf(value))); } public static Object getAttribute(final DocumentDTO source, final Object name) { assert source != null; assert name != null; String key = keyFor(name); // Find existing attribute and remove it for (DocumentAttributeDTO attr : source.getAttributes()) { if (key.equals(attr.getName())) { return attr.getValue(); } } return null; } }