/******************************************************************************* * Copyright (c) 2001, 2005 IBM Corporation 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jem.internal.beaninfo.core; /* */ import java.util.ArrayList; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.w3c.dom.*; import org.eclipse.jem.internal.beaninfo.adapters.*; /** * Beaninfos document in-memory format. */ public class BeaninfosDoc implements IBeaninfosDocEntry { protected IBeaninfosDocEntry[] searchpath; static final String sExported = "exported"; //$NON-NLS-1$ static final String sKind = "kind"; //$NON-NLS-1$ static final String sPath = "path"; //$NON-NLS-1$ public BeaninfosDoc() { } public BeaninfosDoc(IBeaninfosDocEntry[] searchpath) { this.searchpath = searchpath; } public int getKind() { return -1; // N.A. } public IPath getPath() { return null; // N.A. } public static BeaninfosDoc readEntry(IReader reader, Object root, IProject project) { ArrayList paths = new ArrayList(); Object children = reader.getChildren(root); int childrenLength = reader.getLength(children); for (int i = 0; i < childrenLength; i++) { Object child = reader.getItem(children, i); if (reader.isNodeTypeElement(child)) { Object entry = null; if (reader.getNodeName(child).equalsIgnoreCase(BeaninfoEntry.sBeaninfo)) { entry = BeaninfoEntry.readEntry(reader, child, project); } else if (reader.getNodeName(child).equalsIgnoreCase(SearchpathEntry.sSearchpath)) { entry = SearchpathEntry.readEntry(reader, child, project, false); } if (entry != null) paths.add(entry); } } return new BeaninfosDoc((IBeaninfosDocEntry[]) paths.toArray(new IBeaninfosDocEntry[paths.size()])); } public IBeaninfosDocEntry[] getSearchpath() { return searchpath; } public void setSearchpath(IBeaninfosDocEntry[] searchpath) { this.searchpath = searchpath; } public Node writeEntry(Document doc, IProject project) { Element root = doc.createElement(SearchpathEntry.sSearchpath); // Create Root Element for (int i = 0; i < searchpath.length; i++) { root.appendChild(searchpath[i].writeEntry(doc, project)); // Add to the document } return root; } }