/*******************************************************************************
* Copyright (c) 2006 Mountainminds GmbH & Co. KG
* This software is provided under the terms of the Eclipse Public License v1.0
* See http://www.eclipse.org/legal/epl-v10.html.
*
* $Id: CoverageSession.java 39 2006-08-31 20:37:49Z mho $
******************************************************************************/
package com.mountainminds.eclemma.internal.core;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.PlatformObject;
import org.eclipse.debug.core.ILaunchConfiguration;
import com.mountainminds.eclemma.core.ICoverageSession;
import com.mountainminds.eclemma.core.IInstrumentation;
/**
* A {@link com.mountainminds.eclemma.core.ICoverageSession} implementation.
*
* @author Marc R. Hoffmann
* @version $Revision: 39 $
*/
public class CoverageSession extends PlatformObject implements ICoverageSession {
private final String description;
private final IInstrumentation[] instrumentations;
private final IPath[] coveragedatafiles;
private final ILaunchConfiguration launchconfiguration;
public CoverageSession(String description,
IInstrumentation[] instrumentations, IPath[] coveragedatafiles,
ILaunchConfiguration launchconfiguration) {
this.description = description;
this.instrumentations = instrumentations;
this.coveragedatafiles = coveragedatafiles;
this.launchconfiguration = launchconfiguration;
}
// ICoverageSession implementation
public String getDescription() {
return description;
}
public IInstrumentation[] getInstrumentations() {
return instrumentations;
}
public IPath[] getCoverageDataFiles() {
return this.coveragedatafiles;
}
public ILaunchConfiguration getLaunchConfiguration() {
return launchconfiguration;
}
public ICoverageSession merge(ICoverageSession other, String description) {
List i = merge(instrumentations, other.getInstrumentations());
List c = merge(coveragedatafiles, other.getCoverageDataFiles());
return new CoverageSession(description,
(IInstrumentation[]) i.toArray(new IInstrumentation[i.size()]),
(IPath[]) c.toArray(new IPath[c.size()]), launchconfiguration);
}
private List merge(Object[] arr1, Object[] arr2) {
List l = new ArrayList(Arrays.asList(arr1));
for (int i = 0; i < arr2.length; i++) {
if (!l.contains(arr2[i])) {
l.add(arr2[i]);
}
}
return l;
}
}