private ISeamProperty findSeamProperty(IFile file, int start, int end) {
    if (file == null) return null;
    IProject project = file.getProject();
    if (project == null) return null;

    ISeamProject seamProject = SeamCorePlugin.getSeamProject(project, true);
    if (seamProject == null) return null;

    Set<ISeamComponent> components = seamProject.getComponentsByPath(file.getFullPath());
    for (ISeamComponent component : components) {
      Set<ISeamXmlComponentDeclaration> declarations = component.getXmlDeclarations();
      for (ISeamXmlComponentDeclaration declaration : declarations) {
        Collection<ISeamProperty> properties = declaration.getProperties();
        for (ISeamProperty property : properties) {
          ITextSourceReference location =
              property.getLocationFor(ISeamXmlComponentDeclaration.NAME);

          if (location.getStartPosition() <= start
              && (location.getStartPosition() + location.getLength()) >= end) return property;
        }
      }
    }

    return null;
  }
        public Map<String, IStatus> validate(Object value, Object context) {
          String name = value.toString();
          if (context != null && context instanceof ISeamProject) {
            ISeamProject seamProject = (ISeamProject) context;
            ISeamComponent component = seamProject.getComponent(name);
            if (component != null)
              return createErrormessage(
                  new Status(
                      IStatus.ERROR,
                      SeamCorePlugin.PLUGIN_ID,
                      NLS.bind(SeamCoreMessages.VALIDATOR_FACTORY_COMPONENT_ALREADY_EXISTS, name)));
          }

          String[] segs = name.split("\\."); // $NON-NLS-1$
          for (String segm : segs) {
            if (!segm.trim().equals(segm))
              return createErrormessage(
                  new Status(
                      IStatus.ERROR,
                      SeamCorePlugin.PLUGIN_ID,
                      SeamCoreMessages.VALIDATOR_FACTORY_NAME_IS_NOT_VALID));

            IStatus status =
                JavaConventions.validateClassFileName(
                    segm + ".class", DEFAULT_SOURCE_LEVEL, DEFAULT_COMPLIANCE_LEVEL); // $NON-NLS-1$
            if (!status.isOK())
              return createErrormessage(
                  new Status(
                      IStatus.ERROR,
                      SeamCorePlugin.PLUGIN_ID,
                      SeamCoreMessages.VALIDATOR_FACTORY_NAME_IS_NOT_VALID));
          }
          return NO_ERRORS;
        }
 private boolean checkFactories(ISeamProject seamProject) {
   if (seamProject != null) {
     Set<ISeamFactory> factories = seamProject.getFactoriesByName(getOldName());
     return factories.size() > 0;
   }
   return false;
 }
  private boolean checkDataModels(ISeamProject seamProject) {
    if (seamProject != null) {
      Set<IBijectedAttribute> variables =
          seamProject.getBijectedAttributesByName(getOldName(), BijectedAttributeType.DATA_BINDER);

      return variables.size() > 0;
    }
    return false;
  }
  private ISeamComponent checkComponent(ISeamProject seamProject) {
    if (seamProject != null) {
      ISeamComponent component = seamProject.getComponent(getOldName());
      if (component != null) return component;

      Set<ISeamContextVariable> variables = seamProject.getVariablesByName(getOldName());

      if (variables == null) return null;

      for (ISeamContextVariable variable : variables) {
        if (variable instanceof ISeamContextShortVariable) {
          ISeamContextVariable original = ((ISeamContextShortVariable) variable).getOriginal();
          if (original instanceof ISeamComponent) return (ISeamComponent) original;
        }
      }
    }
    return null;
  }