/** * Copyright (c) 2010-2011 United States Government as represented by the Administrator for The National Aeronautics and Space Administration. All Rights Reserved. */ package net.certware.measurement.sco.impl; import java.util.Collection; import net.certware.measurement.sco.ArtifactCommit; import net.certware.measurement.sco.ArtifactIdentifier; import net.certware.measurement.sco.ChangeOrderCount; import net.certware.measurement.sco.CriticalDefectChangeOrders; import net.certware.measurement.sco.ImprovementChangeOrders; import net.certware.measurement.sco.NewFeatureChangeOrders; import net.certware.measurement.sco.NormalDefectChangeOrders; import net.certware.measurement.sco.ScoFactory; import net.certware.measurement.sco.ScoPackage; import net.certware.measurement.sco.TotalChangeOrders; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.emf.ecore.impl.EObjectImpl; import org.eclipse.emf.ecore.util.EObjectContainmentEList; import org.eclipse.emf.ecore.util.InternalEList; /** * <!-- begin-user-doc --> * An implementation of the model object '<em><b>Artifact Commit</b></em>'. * <!-- end-user-doc --> * <p> * The following features are implemented: * <ul> * <li>{@link net.certware.measurement.sco.impl.ArtifactCommitImpl#getArtifactIdentifiers <em>Artifact Identifiers</em>}</li> * <li>{@link net.certware.measurement.sco.impl.ArtifactCommitImpl#getCommitIdentifier <em>Commit Identifier</em>}</li> * <li>{@link net.certware.measurement.sco.impl.ArtifactCommitImpl#getUsageTime <em>Usage Time</em>}</li> * </ul> * </p> * * @generated */ public class ArtifactCommitImpl extends EObjectImpl implements ArtifactCommit { /** * The cached value of the '{@link #getArtifactIdentifiers() <em>Artifact Identifiers</em>}' containment reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getArtifactIdentifiers() * @generated * @ordered */ protected EList<ArtifactIdentifier> artifactIdentifiers; /** * The default value of the '{@link #getCommitIdentifier() <em>Commit Identifier</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getCommitIdentifier() * @generated * @ordered */ protected static final String COMMIT_IDENTIFIER_EDEFAULT = null; /** * The cached value of the '{@link #getCommitIdentifier() <em>Commit Identifier</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getCommitIdentifier() * @generated * @ordered */ protected String commitIdentifier = COMMIT_IDENTIFIER_EDEFAULT; /** * The default value of the '{@link #getUsageTime() <em>Usage Time</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getUsageTime() * @generated * @ordered */ protected static final double USAGE_TIME_EDEFAULT = 0.0; /** * The cached value of the '{@link #getUsageTime() <em>Usage Time</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getUsageTime() * @generated * @ordered */ protected double usageTime = USAGE_TIME_EDEFAULT; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public ArtifactCommitImpl() { super(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override protected EClass eStaticClass() { return ScoPackage.Literals.ARTIFACT_COMMIT; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EList<ArtifactIdentifier> getArtifactIdentifiers() { if (artifactIdentifiers == null) { artifactIdentifiers = new EObjectContainmentEList<ArtifactIdentifier>(ArtifactIdentifier.class, this, ScoPackage.ARTIFACT_COMMIT__ARTIFACT_IDENTIFIERS); } return artifactIdentifiers; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String getCommitIdentifier() { return commitIdentifier; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setCommitIdentifier(String newCommitIdentifier) { String oldCommitIdentifier = commitIdentifier; commitIdentifier = newCommitIdentifier; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, ScoPackage.ARTIFACT_COMMIT__COMMIT_IDENTIFIER, oldCommitIdentifier, commitIdentifier)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public double getUsageTime() { return usageTime; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setUsageTime(double newUsageTime) { double oldUsageTime = usageTime; usageTime = newUsageTime; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, ScoPackage.ARTIFACT_COMMIT__USAGE_TIME, oldUsageTime, usageTime)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case ScoPackage.ARTIFACT_COMMIT__ARTIFACT_IDENTIFIERS: return ((InternalEList<?>)getArtifactIdentifiers()).basicRemove(otherEnd, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { case ScoPackage.ARTIFACT_COMMIT__ARTIFACT_IDENTIFIERS: return getArtifactIdentifiers(); case ScoPackage.ARTIFACT_COMMIT__COMMIT_IDENTIFIER: return getCommitIdentifier(); case ScoPackage.ARTIFACT_COMMIT__USAGE_TIME: return getUsageTime(); } return super.eGet(featureID, resolve, coreType); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @SuppressWarnings("unchecked") @Override public void eSet(int featureID, Object newValue) { switch (featureID) { case ScoPackage.ARTIFACT_COMMIT__ARTIFACT_IDENTIFIERS: getArtifactIdentifiers().clear(); getArtifactIdentifiers().addAll((Collection<? extends ArtifactIdentifier>)newValue); return; case ScoPackage.ARTIFACT_COMMIT__COMMIT_IDENTIFIER: setCommitIdentifier((String)newValue); return; case ScoPackage.ARTIFACT_COMMIT__USAGE_TIME: setUsageTime((Double)newValue); return; } super.eSet(featureID, newValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { case ScoPackage.ARTIFACT_COMMIT__ARTIFACT_IDENTIFIERS: getArtifactIdentifiers().clear(); return; case ScoPackage.ARTIFACT_COMMIT__COMMIT_IDENTIFIER: setCommitIdentifier(COMMIT_IDENTIFIER_EDEFAULT); return; case ScoPackage.ARTIFACT_COMMIT__USAGE_TIME: setUsageTime(USAGE_TIME_EDEFAULT); return; } super.eUnset(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case ScoPackage.ARTIFACT_COMMIT__ARTIFACT_IDENTIFIERS: return artifactIdentifiers != null && !artifactIdentifiers.isEmpty(); case ScoPackage.ARTIFACT_COMMIT__COMMIT_IDENTIFIER: return COMMIT_IDENTIFIER_EDEFAULT == null ? commitIdentifier != null : !COMMIT_IDENTIFIER_EDEFAULT.equals(commitIdentifier); case ScoPackage.ARTIFACT_COMMIT__USAGE_TIME: return usageTime != USAGE_TIME_EDEFAULT; } return super.eIsSet(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public String toString() { if (eIsProxy()) return super.toString(); StringBuffer result = new StringBuffer(super.toString()); result.append(" (commitIdentifier: "); //$NON-NLS-1$ result.append(commitIdentifier); result.append(", usageTime: "); //$NON-NLS-1$ result.append(usageTime); result.append(')'); return result.toString(); } /** * Accumulate the improvement change order count across all artifacts. * @return new improvement change order object with sum of changes */ public ImprovementChangeOrders getAllImprovementChangeOrders() { ImprovementChangeOrders ico = ScoFactory.eINSTANCE.createImprovementChangeOrders(); if ( artifactIdentifiers != null ) { for ( ArtifactIdentifier ai : this.artifactIdentifiers ) { addChangeOrders(ico,ai.getImprovementChangeOrders()); } } return ico; } /** * Accumulate the critical defect change order count across all artifacts. * @return new critical defect change order object with sum of changes */ public CriticalDefectChangeOrders getAllCriticalDefectChangeOrders() { CriticalDefectChangeOrders cdco = ScoFactory.eINSTANCE.createCriticalDefectChangeOrders(); if ( artifactIdentifiers != null ) { for ( ArtifactIdentifier ai : this.artifactIdentifiers ) { addChangeOrders(cdco,ai.getCriticalDefectChangeOrders()); } } return cdco; } /** * Accumulate the new feature change order count across all artifacts. * @return new new-feature order object with sum of changes */ public NewFeatureChangeOrders getAllNewFeatureChangeOrders() { NewFeatureChangeOrders nfco = ScoFactory.eINSTANCE.createNewFeatureChangeOrders(); if ( artifactIdentifiers != null ) { for ( ArtifactIdentifier ai : this.artifactIdentifiers ) { addChangeOrders(nfco,ai.getNewFeatureChangeOrders()); } } return nfco; } /** * Accumulate the normal defect change order count across all artifacts. * @return new normal defect change order object with sum of changes */ public NormalDefectChangeOrders getAllNormalDefectChangeOrders() { NormalDefectChangeOrders ndco = ScoFactory.eINSTANCE.createNormalDefectChangeOrders(); if ( artifactIdentifiers != null ) { for ( ArtifactIdentifier ai : this.artifactIdentifiers ) { addChangeOrders(ndco,ai.getNormalDefectChangeOrders()); } } return ndco; } /** * Accumulate the total change order count across all artifacts. * @return new total order object with sum of changes */ public TotalChangeOrders getAllTotalChangeOrders() { TotalChangeOrders tco = ScoFactory.eINSTANCE.createTotalChangeOrders(); if ( artifactIdentifiers != null ) { for ( ArtifactIdentifier ai : this.artifactIdentifiers ) { addChangeOrders(tco,ai.getTotalChangeOrders()); } } return tco; } /** * Accumulate and return the baselined line count across all artifacts. * @return total baselined line count */ public int getAllBaselinedLineCount() { int count = 0; if ( artifactIdentifiers != null ) { for ( ArtifactIdentifier ai : this.artifactIdentifiers ) { count += ai.getBaselinedLineCount(); } } return count; } /** * Accumulate and return the current line count across all artifacts. * @return total current line count */ public int getAllCurrentLineCount() { int count = 0; if ( artifactIdentifiers != null ) { for ( ArtifactIdentifier ai : this.artifactIdentifiers ) { count += ai.getCurrentLineCount(); } } return count; } /** * Adds the order fields from c2 to c1. * @param c1 change count 1, updated * @param c2 change count 2, not updated */ public void addChangeOrders(ChangeOrderCount c1, ChangeOrderCount c2) { if ( c1 == null || c2 == null ) return; c1.setBrokenLines(c1.getBrokenLines() + c2.getBrokenLines()); c1.setFixedLines( c1.getFixedLines() + c2.getFixedLines() ); c1.setRepairEffort( c1.getRepairEffort() + c2.getRepairEffort() ); c1.setValue( c1.getValue() + c2.getValue() ); } } //ArtifactCommitImpl