Package org.eclipse.ecf.internal.storage

Source Code of org.eclipse.ecf.internal.storage.ContainerEntry

/****************************************************************************
* Copyright (c) 2008 Composent, Inc. 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:
*    Composent, Inc. - initial API and implementation
*****************************************************************************/

package org.eclipse.ecf.internal.storage;

import org.eclipse.ecf.core.*;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.identity.IDCreateException;
import org.eclipse.ecf.storage.*;
import org.eclipse.equinox.security.storage.ISecurePreferences;
import org.eclipse.equinox.security.storage.StorageException;

/**
*
*/
public class ContainerEntry implements IContainerEntry {

  private static final String FACTORY_NAME_KEY = "factoryName"; //$NON-NLS-1$

  ISecurePreferences prefs;
  IIDEntry idEntry;

  ID containerID;

  /**
   * @param idEntry
   */
  public ContainerEntry(IIDEntry idEntry) {
    this.idEntry = idEntry;
    ISecurePreferences prefs = idEntry.getPreferences();
    this.prefs = prefs.node(ContainerStore.CONTAINER_NODE_NAME);
  }

  /* (non-Javadoc)
   * @see org.eclipse.ecf.storage.IContainerEntry#createContainer()
   */
  public IContainer createContainer() throws ContainerCreateException {
    try {
      IContainer container = ContainerFactory.getDefault().createContainer(getFactoryName(), getContainerID());
      IStorableContainerAdapter containerAdapter = (IStorableContainerAdapter) container.getAdapter(IStorableContainerAdapter.class);
      if (containerAdapter != null) {
        containerAdapter.restore(prefs);
      }
      return container;
    } catch (IDCreateException e) {
      throw new ContainerCreateException("Could not create ID for container", e); //$NON-NLS-1$
    } catch (StorageException e) {
      throw new ContainerCreateException("Exception on restore", e); //$NON-NLS-1$
    }
  }

  /* (non-Javadoc)
   * @see org.eclipse.ecf.storage.IContainerEntry#delete()
   */
  public void delete() {
    prefs.removeNode();
  }

  /* (non-Javadoc)
   * @see org.eclipse.ecf.storage.IContainerEntry#getContainerID()
   */
  public ID getContainerID() throws IDCreateException {
    if (containerID == null) {
      containerID = idEntry.createID();
    }
    return containerID;
  }

  /* (non-Javadoc)
   * @see org.eclipse.ecf.storage.IContainerEntry#getFactoryName()
   */
  public String getFactoryName() throws StorageException {
    return prefs.get(FACTORY_NAME_KEY, ""); //$NON-NLS-1$
  }

  protected void setFactoryName(String factoryName, boolean encrypt) throws StorageException {
    prefs.put(FACTORY_NAME_KEY, factoryName, encrypt);
  }

  /* (non-Javadoc)
   * @see org.eclipse.ecf.storage.IContainerEntry#getPreferences()
   */
  public ISecurePreferences getPreferences() {
    return prefs;
  }

  /* (non-Javadoc)
   * @see java.lang.Object#toString()
   */
  public String toString() {
    StringBuffer sb = new StringBuffer("ContainerEntry["); //$NON-NLS-1$
    sb.append("idEntry=").append(idEntry); //$NON-NLS-1$
    sb.append(";prefs=").append(getPreferences()).append("]"); //$NON-NLS-1$//$NON-NLS-2$
    return sb.toString();
  }
}
TOP

Related Classes of org.eclipse.ecf.internal.storage.ContainerEntry

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.