/*******************************************************************************
* Copyright (c) 2005, 2006 Eclipse Foundation
* 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:
* Bjorn Freeman-Benson - initial implementation
* Ward Cunningham - initial implementation
*******************************************************************************/
package org.eclipse.eclipsemonkey.doms.resources;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.filesystem.IFileInfo;
import org.eclipse.core.filesystem.IFileStore;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.eclipsemonkey.dom.Utilities;
/**
* File
*/
public class File {
private IFile file;
/**
* @param resource
*/
public File(IResource resource) {
file = (IFile) resource;
}
/**
* getEclipseObject
* @return The Eclipse IFile object
*/
public IFile getEclipseObject() {
return file;
}
/**
* getLines
* @return The lines in the file
*/
public Line[] getLines() {
try {
List result = new ArrayList();
BufferedReader reader = new BufferedReader(new InputStreamReader(
file.getContents()));
String text;
int lineNumber = 0;
while ((text = reader.readLine()) != null) {
lineNumber++;
result.add(new Line(text, lineNumber, this));
}
reader.close();
int i = 0;
Line[] rtrn = new Line[result.size()];
for (Iterator iter = result.iterator(); iter.hasNext();) {
Line element = (Line) iter.next();
rtrn[i++] = element;
}
return rtrn;
} catch (CoreException x) {
return new Line[0];
} catch (IOException x) {
return new Line[0];
}
}
/**
*
* @return
*/
public long getSize()
{
long size = -1;
try {
URI location = file.getLocationURI();
IFileStore store = EFS.getStore(location);
IFileInfo info = store.fetchInfo();
size = info.getLength();
} catch (CoreException e) {
e.printStackTrace();
size = -1;
}
return size;
}
/**
*
* @return
*/
public long getLastModified()
{
long date = -1;
try {
URI location = file.getLocationURI();
IFileStore store = EFS.getStore(location);
IFileInfo info = store.fetchInfo();
date = info.getLastModified();
} catch (CoreException e) {
e.printStackTrace();
date = -1;
}
return date;
}
/**
* removeMyTasks
* @throws CoreException
*/
public void removeMyTasks() throws CoreException {
IMarker[] markers = file.findMarkers(IMarker.TASK, false, 0);
String key = this.getMarkerKey();
for (int i = 0; i < markers.length; i++) {
IMarker marker = markers[i];
Object value = marker.getAttribute(Resources.standardMarkerName);
if (key.equals(value)) {
marker.delete();
}
}
}
String getMarkerKey() {
return (String) Utilities.state().get(Utilities.SCRIPT_NAME);
}
}