if (field.getValue().startsWith(Constants.HARDWARE_LINK) || field.getValue().startsWith("@") || field.getValue().equals(nullString) || Character.isDigit(field.getValue().charAt(0))) return false;
if (!LinkManagerObject.isSoftwareLink(field)) return false;
public boolean manageLink(VDBFieldData field) {	int type = LinkProperties.getType(field);	if (type == LinkProperties.VARIABLE_FIELD)	{		if (this.containsObject(field.getName()))		{			EPICSVarLink link = (EPICSVarLink)getSubObject(field.getName());			link.validateLink();			return true;					}		return false;	}		else	{				if (this.containsObject(field.getName()))		{			// existing link			EPICSLinkOut link = (EPICSLinkOut)getSubObject(field.getName());			link.valueChanged();			link.setDestroyed(false);			return true;					}		else		{			if (field.getValue().startsWith(Constants.HARDWARE_LINK) ||				field.getValue().startsWith("@") ||    // !!!??				field.getValue().equals(nullString) ||				Character.isDigit(field.getValue().charAt(0))) 				return false; 	//!!!			// new link			LinkProperties properties = new LinkProperties(field);			InLink varlink = EPICSLinkOut.getTarget(properties);			// can point to null? OK, cross will be showed			EPICSLinkOut outlink = null;						if (type==LinkProperties.INLINK_FIELD)				outlink = new EPICSInLink(this, field);			else if (type==LinkProperties.OUTLINK_FIELD)				outlink = new EPICSOutLink(this, field);			else /*if (type==LinkProperties.FWDLINK_FIELD)*/				outlink = new EPICSFwdLink(this, field);					addLink(outlink);			/*if (!properties.isIsInterGroupLink())			{				String id = EPICSLinkOut.generateConnectorID(outlink);				Connector connector = new Connector(id, this, outlink, varlink);				if (varlink!=null)				{					connector.setX((outlink.getOutX()+varlink.getInX())/2);					connector.setY((outlink.getOutY()+varlink.getInY())/2);				}				addSubObject(id, connector);			}			else*/			{				if (varlink!=null) varlink.setOutput(outlink, null);				outlink.setInput(varlink);			}			return true;		}	}}