/*
 * Copyright 2012 James Moger
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.moxie;

import java.text.MessageFormat;
import java.util.List;

import org.moxie.utils.StringUtils;

public class Person {
	public String id;
	public String name;
	public String email;
	public String url;
	public String organization;
	public String organizationUrl;
	public List<String> roles;
	
	public String toXML(String nodename) {
		StringBuilder node = new StringBuilder();
		node.append(MessageFormat.format("<{0}>\n", nodename));

		node.append(StringUtils.toXML("id", id));
		node.append(StringUtils.toXML("name", name));
		node.append(StringUtils.toXML("email", email));
		node.append(StringUtils.toXML("url", url));
		node.append(StringUtils.toXML("organization", organization));
		node.append(StringUtils.toXML("organizationUrl", organizationUrl));
		
		if (roles != null && roles.size() > 0) {
			StringBuilder rolesNode = new StringBuilder();
			rolesNode.append("<roles>\n");
			for (String role : roles) {
				rolesNode.append(StringUtils.toXML("role", role));
			}
			rolesNode.append("</roles>\n");
			node.append(StringUtils.insertHalfTab(rolesNode.toString()));
		}
		
		node.append(MessageFormat.format("</{0}>\n", nodename));
		return node.toString();
	}
}

/*
 * Copyright 2012 James Moger
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.moxie;

import java.text.MessageFormat;
import java.util.List;

import org.moxie.utils.StringUtils;

public class Person {
	public String id;
	public String name;
	public String email;
	public String url;
	public String organization;
	public String organizationUrl;
	public List<String> roles;
	
	@Override
	public String toString() {
		return MessageFormat.format("{0} <{1}>", name, email == null ? "" : email);
	}
	
	public String toXML(String nodename) {
		StringBuilder node = new StringBuilder();
		node.append(MessageFormat.format("<{0}>\n", nodename));

		node.append(StringUtils.toXML("id", id));
		node.append(StringUtils.toXML("name", name));
		node.append(StringUtils.toXML("email", email));
		node.append(StringUtils.toXML("url", url));
		node.append(StringUtils.toXML("organization", organization));
		node.append(StringUtils.toXML("organizationUrl", organizationUrl));
		
		if (roles != null && roles.size() > 0) {
			StringBuilder rolesNode = new StringBuilder();
			rolesNode.append("<roles>\n");
			for (String role : roles) {
				rolesNode.append(StringUtils.toXML("role", role));
			}
			rolesNode.append("</roles>\n");
			node.append(StringUtils.insertHalfTab(rolesNode.toString()));
		}
		
		node.append(MessageFormat.format("</{0}>\n", nodename));
		return node.toString();
	}
}

Improve Person.toString