/*
* Copyright (C) 2003-2009 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.ks.bbcode.core;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.exoplatform.ks.bbcode.api.BBCode;
import org.exoplatform.ks.bbcode.api.BBCodeService;
import org.exoplatform.ks.bbcode.spi.BBCodePlugin;
/**
* Implementation of BBCodeService that manages BBCodes in memory
* @author <a href="mailto:patrice.lamarque@exoplatform.com">Patrice Lamarque</a>
* @version $Revision$
*/
public class MemoryBBCodeService implements BBCodeService {
private Map<String, BBCode> bbcodes;
public MemoryBBCodeService() {
bbcodes = new HashMap<String, BBCode>();
}
public void delete(String bbcodeId) throws Exception {
bbcodes.remove(bbcodeId);
}
public BBCode findById(String bbcodeId) throws Exception {
return bbcodes.get(bbcodeId);
}
public List<String> getActive() throws Exception {
List<String> result = new ArrayList<String>();
Iterator<BBCode> it = bbcodes.values().iterator();
while (it.hasNext()) {
BBCode bbCode = (BBCode) it.next();
if (bbCode.isActive()) {
result.add(bbCode.getId());
}
}
return result;
}
public List<BBCode> getAll() throws Exception {
return new ArrayList<BBCode>(bbcodes.values());
}
public void registerBBCodePlugin(BBCodePlugin plugin) throws Exception {
throw new UnsupportedOperationException("registering a BBCode plugin is not supported by " + getClass());
}
public void save(List<BBCode> bbcodes) throws Exception {
for (BBCode bbCode : bbcodes) {
addBBCode(bbCode);
}
}
public void addBBCode(BBCode code) {
code.setId(code.getTagName() + ((code.isOption()) ? "=" : ""));
this.bbcodes.put(code.getId(), code);
}
}