/******************************************************************************* * Copyright (c) 2014, 2015 Cisco Systems, 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 * *******************************************************************************/ package com.cisco.yangide.core.model; import java.util.Map; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Status; import com.cisco.yangide.core.IOpenable; import com.cisco.yangide.core.OpenableElementInfo; import com.cisco.yangide.core.YangCorePlugin; import com.cisco.yangide.core.YangModelException; /** * @author Konstantin Zaitsev * @date Jun 25, 2014 */ public class YangModel extends YangElement { public YangModel() { super(null); } @Override protected boolean buildStructure(OpenableElementInfo info, IProgressMonitor pm, Map<IOpenable, OpenableElementInfo> newElements, IResource underlyingResource) throws YangModelException { IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); int length = projects.length; IOpenable[] children = new IOpenable[length]; int index = 0; for (int i = 0; i < length; i++) { IProject project = projects[i]; if (project.isAccessible() && YangCorePlugin.isYangProject(project)) { children[index++] = new YangProject(project, this); } } if (index < length) { System.arraycopy(children, 0, children = new IOpenable[index], 0, index); } info.setChildren(children); newElements.put(this, info); return true; } public YangProject[] getYangProjects() throws YangModelException { IOpenable[] children = getChildren(); YangProject[] projects = new YangProject[children.length]; for (int i = 0; i < projects.length; i++) { projects[i] = (YangProject) children[i]; } return projects; } @Override protected IStatus validateExistence(IResource underlyingResource) { return Status.OK_STATUS; } @Override public IPath getPath() { return Path.ROOT; } @Override public YangElementType getElementType() { return YangElementType.YANG_MODEL; } }