/*******************************************************************************
 * Copyright (c) 2010 Robert "Unlogic" Olofsson (unlogic@unlogic.se).
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Lesser Public License v3
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/lgpl-3.0-standalone.html
 ******************************************************************************/
package se.unlogic.standardutils.string;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class TagReplacer {

	private List<TagSource> tagSources;

	public TagReplacer() {
		
		tagSources = new ArrayList<TagSource>();
	}

	public TagReplacer(List<TagSource> tagSources) {
		super();
		this.tagSources = new ArrayList<TagSource>(tagSources);
	}

	public TagReplacer(TagSource... tagSources) {
		super();
		this.tagSources = new ArrayList<TagSource>(Arrays.asList(tagSources));
	}

	public boolean addTagSource(TagSource o) {

		if(tagSources == null){
			
			tagSources = new ArrayList<TagSource>();
		}
		
		return tagSources.add(o);
	}

	public boolean removeTagSource(TagSource o) {

		if(tagSources == null){
			
			return false;
		}
		
		return tagSources.remove(o);
	}

	public String replace(String source){

		for(TagSource tagSource : tagSources){

			for(String tag : tagSource.getTags()){

				if(source.contains(tag)){

					String value = tagSource.getTagValue(tag);

					if(value == null){

						value = "";
					}

					source = source.replace(tag, value);
				}
			}
		}

		return source;
	}
}
