Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile/validator/ValidatorStrategy.java')
-rw-r--r--bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile/validator/ValidatorStrategy.java200
1 files changed, 0 insertions, 200 deletions
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile/validator/ValidatorStrategy.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile/validator/ValidatorStrategy.java
deleted file mode 100644
index b34051f21a..0000000000
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile/validator/ValidatorStrategy.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
- * 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:
- * IBM Corporation - initial API and implementation
- * Jens Lukowski/Innoopract - initial renaming/restructuring
- *
- *******************************************************************************/
-package org.eclipse.wst.sse.ui.internal.reconcile.validator;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.content.IContentTypeManager;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITypedRegion;
-import org.eclipse.jface.text.reconciler.DirtyRegion;
-import org.eclipse.jface.text.reconciler.IReconcileResult;
-import org.eclipse.jface.text.reconciler.IReconcileStep;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.eclipse.wst.sse.ui.internal.reconcile.AbstractStructuredTextReconcilingStrategy;
-import org.eclipse.wst.sse.ui.internal.reconcile.DocumentAdapter;
-import org.eclipse.wst.sse.ui.internal.reconcile.StructuredReconcileStep;
-import org.eclipse.wst.sse.ui.internal.reconcile.TemporaryAnnotation;
-import org.eclipse.wst.validation.internal.provisional.core.IValidator;
-
-
-/**
- * Special validator strategy. Runs validator steps contributed via the
- * <code>org.eclipse.wst.sse.ui.extensions.sourcevalidation</code> extension point
- *
- * @author pavery
- */
-public class ValidatorStrategy extends AbstractStructuredTextReconcilingStrategy {
-
- private String[] fContentTypeIds = null;
- /** validator id (as declared in ext point) -> ReconcileStepForValidator **/
- private HashMap fVidToVStepMap = null;
- private List fMetaData = null;
-
- public ValidatorStrategy(ITextEditor editor, String contentType) {
- super(editor);
- fMetaData = new ArrayList();
- fContentTypeIds = calculateParentContentTypeIds(contentType);
- fVidToVStepMap = new HashMap();
- }
-
- /**
- * The content type passed in should be the most specific one.
- * TODO: This exact method is also in ValidatorMetaData. Should be in a common place.
- *
- * @param contentType
- * @return
- */
- private String[] calculateParentContentTypeIds(String contentTypeId) {
-
- Set parentTypes = new HashSet();
-
- IContentTypeManager ctManager = Platform.getContentTypeManager();
- IContentType ct = ctManager.getContentType(contentTypeId);
- String id = contentTypeId;
-
- while(ct != null && id != null) {
-
- parentTypes.add(id);
- ct = ctManager.getContentType(id);
- if(ct != null) {
- IContentType baseType = ct.getBaseType();
- id = (baseType != null) ? baseType.getId() : null;
- }
- }
- return (String[])parentTypes.toArray(new String[parentTypes.size()]);
- }
-
- public void addValidatorMetaData(ValidatorMetaData vmd) {
- fMetaData.add(vmd);
- }
-
- /**
- *
- * @param partitionType
- * @return true if the strategy contains at least one ValidatorMetaData
- * that says it can handle the partition type (for a given content type)
- */
- public boolean canValidatePartition(String partitionType) {
- ValidatorMetaData vmd = null;
- for (int i = 0; i < fMetaData.size(); i++) {
- vmd = (ValidatorMetaData) fMetaData.get(i);
- if (vmd.canHandleParitionType(getContentTypeIds(), partitionType))
- return true;
- }
- return false;
- }
-
- /*
- * so that removal will work properly
- *
- * @see org.eclipse.wst.sse.ui.reconcile.AbstractStructuredTextReconcilingStrategy#containsStep(org.eclipse.jface.text.reconciler.IReconcileStep)
- */
- protected boolean containsStep(IReconcileStep step) {
- return step != null ? fVidToVStepMap.values().contains(step) : false;
- }
-
- /**
- * @see org.eclipse.wst.sse.ui.internal.provisional.reconcile.AbstractStructuredTextReconcilingStrategy#createReconcileSteps()
- */
- public void createReconcileSteps() {
- // do nothing, steps are created
- }
-
- public String[] getContentTypeIds() {
- return fContentTypeIds;
- }
-
- /*
- * so that removal will work properly
- *
- * @see org.eclipse.wst.sse.ui.reconcile.AbstractStructuredTextReconcilingStrategy#getPartitionTypes()
- */
- public String[] getPartitionTypes() {
- List partitionTypes = new ArrayList();
- Iterator keys = fVidToVStepMap.keySet().iterator();
- String key = null;
- while (keys.hasNext()) {
- key = (String) keys.next();
- StructuredReconcileStep step = (StructuredReconcileStep) fVidToVStepMap.get(key);
- partitionTypes.addAll(Arrays.asList(step.getPartitionTypes()));
- }
- return (String[]) partitionTypes.toArray(new String[partitionTypes.size()]);
- }
-
- public void reconcile(ITypedRegion tr, DirtyRegion dr) {
-
- // for external files, this can be null
- if (getFile() != null) {
-
- String partitionType = tr.getType();
- if (canValidatePartition(partitionType)) {
- ValidatorMetaData vmd = null;
-
-
- // IReconcileResult[]
- ArrayList annotationsToAdd = new ArrayList();
- // loop all of the relevant validator meta data
- // to find new annotations
- for (int i = 0; i < fMetaData.size(); i++) {
- vmd = (ValidatorMetaData) fMetaData.get(i);
- if (vmd.canHandleParitionType(getContentTypeIds(), partitionType)) {
- // get step for partition type
- Object o = fVidToVStepMap.get(vmd.getValidatorId());
- ReconcileStepForValidator validatorStep = null;
- if (o != null) {
- validatorStep = (ReconcileStepForValidator) o;
- } else {
- // if doesn't exist, create one
- IValidator validator = vmd.createValidator();
- validatorStep = new ReconcileStepForValidator(validator, vmd.getValidatorScope());
- validatorStep.setInputModel(new DocumentAdapter(fDocument));
-
- fVidToVStepMap.put(vmd.getValidatorId(), validatorStep);
- }
- annotationsToAdd.addAll(Arrays.asList(validatorStep.reconcile(dr, dr)));
- }
- }
-
- TemporaryAnnotation[] annotationsToRemove= getAnnotationsToRemove(dr);
- if (annotationsToRemove.length + annotationsToAdd.size() > 0)
- smartProcess(annotationsToRemove, (IReconcileResult[]) annotationsToAdd.toArray(new IReconcileResult[annotationsToAdd.size()]));
-
- }
- }
- }
-
- /**
- * @see org.eclipse.wst.sse.ui.internal.reconcile.AbstractStructuredTextReconcilingStrategy#setDocument(org.eclipse.jface.text.IDocument)
- */
- public void setDocument(IDocument document) {
-
- super.setDocument(document);
- // validator steps are in "fVIdToVStepMap" (as opposed to fFirstStep >
- // next step etc...)
- Iterator it = fVidToVStepMap.values().iterator();
- IReconcileStep step = null;
- while (it.hasNext()) {
- step = (IReconcileStep) it.next();
- step.setInputModel(new DocumentAdapter(document));
- }
- }
-}

Back to the top