| /* |
| * Copyright (c) 2010-2012 Eike Stepper (Berlin, Germany) and others. |
| * 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: |
| * Ibrahim Sallam - initial API and implementation |
| */ |
| |
| package org.eclipse.emf.cdo.server.internal.objectivity; |
| |
| import org.eclipse.emf.cdo.server.internal.objectivity.db.FdManager; |
| import org.eclipse.emf.cdo.server.objectivity.IObjectivityStoreConfig; |
| |
| import org.eclipse.net4j.util.lifecycle.Lifecycle; |
| |
| import com.objy.db.app.Connection; |
| import com.objy.db.app.oo; |
| |
| import org.w3c.dom.Element; |
| import org.w3c.dom.NodeList; |
| |
| public class ObjectivityStoreConfig extends Lifecycle implements IObjectivityStoreConfig |
| { |
| private static final long serialVersionUID = 1L; |
| |
| FdManager fdManager = new FdManager(); |
| |
| private int sessionMinCacheSize = 0; |
| |
| private int sessionMaxCacheSize = 0; |
| |
| private int logOption = oo.LogNone; |
| |
| public ObjectivityStoreConfig() |
| { |
| // fdManager.deleteFD(); |
| fdManager.configure(); |
| } |
| |
| public ObjectivityStoreConfig(Element storeConfig) |
| { |
| // for now we'll just call the default configuration... |
| getFdProperties(storeConfig); |
| fdManager.configure(); |
| } |
| |
| public ObjectivityStoreConfig(String name) |
| { |
| // create an FD with that name. |
| fdManager.configure(name); |
| } |
| |
| @Override |
| public void doActivate() |
| { |
| // System.out.println("ObjectivityStoreConfig.doActivate()"); |
| fdManager.deleteFD(); |
| fdManager.configure(); |
| } |
| |
| @Override |
| public void doDeactivate() |
| { |
| fdManager.deleteFD(); |
| } |
| |
| public String getFdName() |
| { |
| return fdManager.getFd(); |
| } |
| |
| public void resetFD() |
| { |
| if (Connection.current() == null) |
| { |
| return; |
| } |
| |
| fdManager.removeData(); |
| } |
| |
| private void getFdProperties(Element storeConfig) |
| { |
| NodeList fdConfigs = storeConfig.getElementsByTagName("fdConfig"); //$NON-NLS-1$ |
| if (fdConfigs.getLength() != 1) |
| { |
| throw new IllegalStateException("FD configuration is missing"); //$NON-NLS-1$ |
| } |
| |
| Element fdConfig = (Element)fdConfigs.item(0); |
| String fdName = fdConfig.getAttribute("name"); //$NON-NLS-1$ |
| String lockServerHost = fdConfig.getAttribute("lockServerHost"); //$NON-NLS-1$ |
| String fdDirPath = fdConfig.getAttribute("fdDirPath"); //$NON-NLS-1$ |
| // for future use once we allow databases to be created somewhere else. |
| // String dbDirPath = fdConfig.getAttribute("dbDirPath"); //$NON-NLS-1$ |
| String logDirPath = fdConfig.getAttribute("logDirPath");//$NON-NLS-1$ |
| String fdFileHost = fdConfig.getAttribute("fdFileHost"); //$NON-NLS-1$ |
| String fdNumber = fdConfig.getAttribute("fdNumber"); //$NON-NLS-1$ |
| String pageSize = fdConfig.getAttribute("pageSize"); //$NON-NLS-1$ |
| |
| // Session Cache data. |
| sessionMinCacheSize = getIntegerValue(fdConfig.getAttribute("SessionMinCacheSize"), 0); //$NON-NLS-1$ |
| sessionMaxCacheSize = getIntegerValue(fdConfig.getAttribute("SessionMaxCacheSize"), 0); //$NON-NLS-1$ |
| |
| // Log options. |
| String logOptionString = fdConfig.getAttribute("logOption"); |
| if (logOptionString.equalsIgnoreCase("LogAll")) |
| { |
| logOption = oo.LogAll; |
| } |
| else if (logOptionString.equalsIgnoreCase("LogSession")) |
| { |
| logOption = oo.LogSession; |
| } |
| |
| fdManager.setFdName(fdName); |
| fdManager.setFdDirPath(fdDirPath); |
| fdManager.setlogDirPath(logDirPath); |
| fdManager.setFdNumber(fdNumber); |
| fdManager.setFdFileHost(fdFileHost); |
| fdManager.setLockServerHost(lockServerHost); |
| fdManager.setPageSize(pageSize); |
| |
| } |
| |
| private int getIntegerValue(String str, int defaultValue) |
| { |
| if (str.length() == 0) // once we move to JDK 6 we can use isEmpty(). |
| { |
| return defaultValue; |
| } |
| |
| return new Integer(str).intValue(); |
| } |
| |
| public int getSessionMinCacheSize() |
| { |
| return sessionMinCacheSize; |
| } |
| |
| public int getSessionMaxCacheSize() |
| { |
| return sessionMaxCacheSize; |
| } |
| |
| public String getLogPath() |
| { |
| return fdManager.getLogPath(); |
| } |
| |
| public int getLogOption() |
| { |
| return logOption; |
| } |
| } |