aboutsummaryrefslogtreecommitdiffstats
path: root/org.openembedded.bc.ui/src/org/openembedded/bc/ui/builder/BitbakeBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.openembedded.bc.ui/src/org/openembedded/bc/ui/builder/BitbakeBuilder.java')
-rw-r--r--org.openembedded.bc.ui/src/org/openembedded/bc/ui/builder/BitbakeBuilder.java178
1 files changed, 178 insertions, 0 deletions
diff --git a/org.openembedded.bc.ui/src/org/openembedded/bc/ui/builder/BitbakeBuilder.java b/org.openembedded.bc.ui/src/org/openembedded/bc/ui/builder/BitbakeBuilder.java
new file mode 100644
index 0000000..40ece69
--- /dev/null
+++ b/org.openembedded.bc.ui/src/org/openembedded/bc/ui/builder/BitbakeBuilder.java
@@ -0,0 +1,178 @@
+/*****************************************************************************
+ * Copyright (c) 2009 Ken Gilmer
+ * 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:
+ * Ken Gilmer - initial API and implementation
+ *******************************************************************************/
+package org.openembedded.bc.ui.builder;
+
+import java.util.Map;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.xml.sax.SAXException;
+
+public class BitbakeBuilder extends IncrementalProjectBuilder {
+
+ class SampleDeltaVisitor implements IResourceDeltaVisitor {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.resources.IResourceDeltaVisitor#visit(org.eclipse.core.resources.IResourceDelta)
+ */
+ public boolean visit(IResourceDelta delta) throws CoreException {
+ IResource resource = delta.getResource();
+ switch (delta.getKind()) {
+ case IResourceDelta.ADDED:
+ // handle added resource
+ //checkXML(resource);
+ break;
+ case IResourceDelta.REMOVED:
+ // handle removed resource
+ break;
+ case IResourceDelta.CHANGED:
+ // handle changed resource
+ //checkXML(resource);
+ break;
+ }
+ //return true to continue visiting children.
+ return true;
+ }
+ }
+/*
+ class SampleResourceVisitor implements IResourceVisitor {
+ public boolean visit(IResource resource) {
+
+ return true;
+ }
+ }
+*/
+/* class XMLErrorHandler extends DefaultHandler {
+
+ private IFile file;
+
+ public XMLErrorHandler(IFile file) {
+ this.file = file;
+ }
+
+ private void addMarker(SAXParseException e, int severity) {
+ BitbakeBuilder.this.addMarker(file, e.getMessage(), e
+ .getLineNumber(), severity);
+ }
+
+ @Override
+ public void error(SAXParseException exception) throws SAXException {
+ addMarker(exception, IMarker.SEVERITY_ERROR);
+ }
+
+ @Override
+ public void fatalError(SAXParseException exception) throws SAXException {
+ addMarker(exception, IMarker.SEVERITY_ERROR);
+ }
+
+ @Override
+ public void warning(SAXParseException exception) throws SAXException {
+ addMarker(exception, IMarker.SEVERITY_WARNING);
+ }
+ }
+*/
+ public static final String BUILDER_ID = "org.openembedded.bc.ui.builder.BitbakeBuilder";
+
+ private static final String MARKER_TYPE = "org.openembedded.bc.ui.xmlProblem";
+
+ private SAXParserFactory parserFactory;
+
+ private void addMarker(IFile file, String message, int lineNumber,
+ int severity) {
+ try {
+ IMarker marker = file.createMarker(MARKER_TYPE);
+ marker.setAttribute(IMarker.MESSAGE, message);
+ marker.setAttribute(IMarker.SEVERITY, severity);
+ if (lineNumber == -1) {
+ lineNumber = 1;
+ }
+ marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.internal.events.InternalBuilder#build(int,
+ * java.util.Map, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ protected IProject[] build(int kind, Map args, IProgressMonitor monitor)
+ throws CoreException {
+ if (kind == FULL_BUILD) {
+ fullBuild(monitor);
+ } else {
+ IResourceDelta delta = getDelta(getProject());
+ if (delta == null) {
+ fullBuild(monitor);
+ } else {
+ incrementalBuild(delta, monitor);
+ }
+ }
+ return null;
+ }
+
+ /*void checkXML(IResource resource) {
+ if (resource instanceof IFile && resource.getName().endsWith(".xml")) {
+ IFile file = (IFile) resource;
+ deleteMarkers(file);
+ XMLErrorHandler reporter = new XMLErrorHandler(file);
+ try {
+ getParser().parse(file.getContents(), reporter);
+ } catch (Exception e1) {
+ }
+ }
+ }*/
+
+ private void deleteMarkers(IFile file) {
+ try {
+ file.deleteMarkers(MARKER_TYPE, false, IResource.DEPTH_ZERO);
+ } catch (CoreException ce) {
+ ce.printStackTrace();
+ }
+ }
+
+ protected void fullBuild(final IProgressMonitor monitor)
+ throws CoreException {
+ /*try {
+ getProject().accept(new SampleResourceVisitor());
+ } catch (CoreException e) {
+ }*/
+ }
+
+ private SAXParser getParser() throws ParserConfigurationException,
+ SAXException {
+ if (parserFactory == null) {
+ parserFactory = SAXParserFactory.newInstance();
+ }
+ return parserFactory.newSAXParser();
+ }
+
+ protected void incrementalBuild(IResourceDelta delta,
+ IProgressMonitor monitor) throws CoreException {
+ // the visitor does the work.
+ delta.accept(new SampleDeltaVisitor());
+ }
+}