blob: 1500a2b97bc6f4f12bd65927a7d62e1b7e1b041b [file] [log] [blame]
/**
* <copyright>
* Copyright (c) 2009-2010 Thales Corporate Services S.A.S.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-v2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Thales Corporate Services S.A.S - initial API and implementation
* </copyright>
*/
package org.eclipse.egf.pattern.ui.compare;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.eclipse.compare.IEditableContent;
import org.eclipse.compare.IStreamContentAccessor;
import org.eclipse.compare.ITypedElement;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.egf.model.pattern.PatternMethod;
import org.eclipse.egf.model.pattern.template.TemplateModelFileHelper;
import org.eclipse.egf.pattern.ui.Activator;
import org.eclipse.egf.pattern.ui.ImageShop;
import org.eclipse.egf.pattern.ui.editors.providers.PatternElementLabelProvider;
import org.eclipse.egf.pattern.utils.TemplateFileHelper;
import org.eclipse.emf.common.util.URI;
import org.eclipse.swt.graphics.Image;
/**
* @author Matthieu Helleboid
*/
public class MethodCompareItem implements IStreamContentAccessor, ITypedElement, IEditableContent {
private PatternMethod patternMethod;
private String name;
public MethodCompareItem(PatternMethod patternMethod) {
this.patternMethod = patternMethod;
}
public InputStream getContents() throws CoreException {
BufferedReader bufferedReader = null;
try {
InputStream inputStream = TemplateModelFileHelper.getInputStream(patternMethod);
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
StringBuilder stringBuilder = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
if (stringBuilder.length() > 0)
stringBuilder.append("\n"); //$NON-NLS-1$
stringBuilder.append(line); //$NON-NLS-1$
}
return new ByteArrayInputStream(stringBuilder.toString().getBytes());
} catch (IOException e) {
throw new CoreException(new Status(IStatus.ERROR, null, e.getMessage(), e));
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
}
}
}
}
public Image getImage() {
return Activator.getDefault().getImage(ImageShop.IMG_METHOD);
}
public String getName() {
if (name == null) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(new PatternElementLabelProvider().getText(patternMethod.getPattern()));
stringBuilder.append(".");
stringBuilder.append(patternMethod.getName());
name = stringBuilder.toString();
}
return name;
}
public String getType() {
return ITypedElement.TEXT_TYPE;
}
public boolean isEditable() {
return getFile().exists();
}
public ITypedElement replace(ITypedElement dest, ITypedElement src) {
return dest;
}
public void setContent(byte[] newContent) {
try {
TemplateFileHelper.setContent(getFile(), new String(newContent));
} catch (CoreException e) {
Activator.getDefault().log(new Status(IStatus.ERROR, null, e.getMessage(), e));
}
}
public IFile getFile() {
URI templateURI = TemplateModelFileHelper.getTemplateURI(patternMethod);
IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(templateURI.toPlatformString(true)));
return file;
}
}