/******************************************************************************* * Copyright (c) 2015 ARM Ltd. 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: * ARM Ltd and ARM Germany GmbH - Initial API and implementation *******************************************************************************/ package com.arm.cmsis.pack.rte.packs; import com.arm.cmsis.pack.common.CmsisConstants; import com.arm.cmsis.pack.data.CpAttributes; import com.arm.cmsis.pack.data.ICpItem; import com.arm.cmsis.pack.data.ICpPack; import com.arm.cmsis.pack.generic.IAttributes; import com.arm.cmsis.pack.info.ICpPackInfo; /** * */ public class RtePack extends RtePackItem implements IRtePack { protected ICpPack fPack = null; protected ICpPackInfo fPackInfo = null; protected IAttributes fAttributes = new CpAttributes(); private boolean fbSelected = false; public RtePack(IRtePackItem parent, ICpItem packItem) { super(parent); addCpItem(packItem); } @Override public void clear() { super.clear(); fPack = null; fPackInfo = null; fbSelected = false; } @Override public boolean purge() { if(!isUsed() && !isInstalled()) { clear(); return true; } return false; } @Override public void addCpItem(ICpItem item) { if(item instanceof ICpPack) { fPack = (ICpPack)item; fAttributes.setAttribute(CmsisConstants.NAME, fPack.getName()); fAttributes.setAttribute(CmsisConstants.URL, fPack.getUrl()); fAttributes.setAttribute(CmsisConstants.VENDOR, fPack.getVendor()); fAttributes.setAttribute(CmsisConstants.VERSION, fPack.getVersion()); } else if(item instanceof ICpPackInfo) { fPackInfo = (ICpPackInfo)item; if(fPack == null) fAttributes.setAttributes(fPackInfo.attributes()); } } @Override public ICpItem getCpItem() { ICpPack pack = getPack(); if(pack != null) return pack; return getPackInfo(); } @Override public ICpPackInfo getPackInfo() { return fPackInfo; } @Override public ICpPack getPack() { return fPack; } @Override public String getId() { ICpItem item = getCpItem(); if(item != null) return item.getId(); return null; } @Override public boolean isSelected() { switch(getVersionMatchMode()){ case EXCLUDED: return false; case LATEST: return isLatest(); case FIXED: default: break; } return fbSelected; } @Override public boolean isExcluded() { return !isSelected(); } @Override public boolean isExplicitlySelected() { return fbSelected; } @Override public boolean isUsed() { IRtePackCollection root = getRoot(); if(root != null) return root.isPackUsed(getId()); return false; } @Override public String getVersion() { ICpItem item = getCpItem(); if(item != null) return item.getVersion(); return null; } @Override public void setSelected(boolean selected) { fbSelected = selected; } @Override public boolean isInstalled() { return fPack != null; } @Override public boolean isLatest() { return fParent.getFirstChild() == this; } @Override public IRtePackItem getFirstChild() { return null; } @Override public boolean hasChildren() { return false; } @Override public Object[] getChildArray() { return EMPTY_OBJECT_ARRAY; } @Override public int getChildCount() { return 0; } @Override public IAttributes getAttributes() { return fAttributes; } }