/******************************************************************************* * 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.info; import com.arm.cmsis.pack.common.CmsisConstants; import com.arm.cmsis.pack.data.CpFile; import com.arm.cmsis.pack.data.ICpFile; import com.arm.cmsis.pack.data.ICpItem; import com.arm.cmsis.pack.enums.EFileRole; import com.arm.cmsis.pack.utils.VersionComparator; /** * Default implementation of ICpFileInfo interface * * @see ICpFileInfo * @see CpFile */ public class CpFileInfo extends CpFile implements ICpFileInfo { ICpFile fFile = null; int fVersionDiff = 0; public CpFileInfo(ICpItem parent, ICpFile file) { super(parent, file.getTag()); setFile(file); updateInfo(); } public CpFileInfo(ICpItem parent, String tag) { super(parent, tag); } @Override public ICpFile getFile() { return fFile; } @Override public void setFile(ICpFile file) { fFile = file; } @Override public void updateInfo() { if (fFile != null) { fVersionDiff = 0; attributes().setAttributes(fFile.attributes()); if (fFile.getRole() == EFileRole.CONFIG) { // ensure we have the version for config files attributes().setAttribute(CmsisConstants.VERSION, fFile.getVersion()); } if (fFile.isDeviceDependent()) { attributes().setAttribute(CmsisConstants.DEVICE_DEPENDENT, true); } else { attributes().removeAttribute(CmsisConstants.DEVICE_DEPENDENT); } } } @Override public ICpComponentInfo getComponentInfo() { for (ICpItem parent = getParent(); parent != null; parent = parent.getParent()) { if (parent instanceof ICpComponentInfo) { return (ICpComponentInfo) parent; } } return null; } @Override public ICpPackInfo getPackInfo() { ICpComponentInfo ci = getComponentInfo(); if (ci != null) { return ci.getPackInfo(); } return null; } @Override public void setVersion(String version) { attributes().setAttribute(CmsisConstants.VERSION, version); if (fFile != null) { fVersionDiff = VersionComparator.versionCompare(getVersion(), fFile.getVersion()); } else { fVersionDiff = 0; } } @Override public int getVersionDiff() { if (fFile == null) { return 0; } return fVersionDiff; } @Override public boolean isGenerated() { if (fFile != null) return fFile.isGenerated(); return super.isGenerated(); } }