/**
* Copyright (C) 2010 eXo Platform SAS.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.xcmis.sp.inmemory.tck;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Properties;
import org.apache.tika.exception.TikaException;
import org.xcmis.spi.CmisRegistry;
import org.xcmis.spi.CmisRegistryFactory;
import org.xcmis.spi.RenditionManager;
import org.xcmis.spi.utils.Logger;
/**
* @author <a href="mailto:andrew00x@gmail.com">Andrey Parfonov</a>
* @version $Id: InmemoryCmisRegistryFactory.java 1500 2010-08-05 09:00:58Z
* andrew00x $
*/
public class InmemoryCmisRegistryFactory implements CmisRegistryFactory
{
private static final Logger LOG = Logger.getLogger(InmemoryCmisRegistryFactory.class);
private CmisRegistry reg = new CmisRegistry();
public InmemoryCmisRegistryFactory() throws TikaException
{
ClassLoader cl = null;
try
{
cl = Thread.currentThread().getContextClassLoader();
}
catch (Exception e)
{
LOG.error("Unable get context class loader. " + e.getMessage());
}
boolean fconfig = false;
if (cl != null)
{
InputStream in = cl.getResourceAsStream("xcmis-storage.properties");
Properties properties = new Properties();
if (in != null)
{
try
{
properties.load(new BufferedInputStream(in));
fconfig = true;
}
catch (IOException ioe)
{
LOG.error(ioe.getMessage(), ioe);
}
}
String renditionProvider = (String)properties.get("org.xcmis.storage.renditionProvider");
if (renditionProvider != null)
{
RenditionManager renditionManager = RenditionManager.getInstance();
renditionManager.addRenditionProviders(Arrays.asList(renditionProvider.split(",")));
}
String sids = (String)properties.get("org.xcmis.storage.id");
if (sids != null)
{
for (String s : sids.split(","))
{
String id = s.trim();
if (id.length() > 0)
{
String name = (String)properties.get("org.xcmis.storage." + id + ".name");
String description = (String)properties.get("org.xcmis.storage." + id + ".description");
String sMaxItemsNum = (String)properties.get("org.xcmis.storage." + id + ".maxItemsNum");
long maxItemsNum = -1;
if (sMaxItemsNum != null && sMaxItemsNum.length() > 0)
{
try
{
maxItemsNum = Long.parseLong(sMaxItemsNum);
}
catch (NumberFormatException ne)
{
LOG.error("Unable convert '" + sMaxItemsNum + "' to long. ");
}
}
String sMaxMem = (String)properties.get("org.xcmis.storage." + id + ".maxMem");
long maxMem = -1;
if (sMaxMem != null && sMaxMem.length() > 0)
{
try
{
maxMem = Long.parseLong(sMaxMem);
}
catch (NumberFormatException ne)
{
LOG.error("Unable convert '" + sMaxMem + "' to long. ");
}
}
reg.addStorage(new org.xcmis.sp.inmemory.StorageProviderImpl(id, //
name != null && name.length() > 0 ? name : id, //
description != null && description.length() > 0 ? description : id, //
maxMem, //
maxItemsNum));
LOG.info("Register storage " + id);
}
}
}
}
if (!fconfig)
{
// Default
reg.addStorage(new org.xcmis.sp.inmemory.StorageProviderImpl("cmis1", "cmis1", "", -1L, -1L));
}
}
public CmisRegistry getRegistry()
{
return reg;
}
}