/** * Get Item from {@link IField} <br> * DLTK Model => AST */ public static Item getItem(IField field) { IModelElement parent = field.getParent(); if (parent instanceof IType) { RecordTypeDef typeDef = (RecordTypeDef) getTypeDef((IType) parent); return typeDef.getFields().get(field.getElementName()); } else if (parent instanceof ISourceModule) { LuaSourceRoot luaSourceRoot = getLuaSourceRoot((ISourceModule) parent); try { if (Flags.isPrivate(field.getFlags())) { List<LocalVar> localVars = luaSourceRoot.getInternalContent().getContent().getLocalVars(); for (LocalVar localVar : localVars) { if (localVar.getVar().getName().equals(field.getElementName())) return localVar.getVar(); } } else { return luaSourceRoot.getFileapi().getGlobalvars().get(field.getElementName()); } } catch (ModelException e) { Activator.logError("unable to get item from field " + field, e); // $NON-NLS-1$ return null; } } return null; }
@SuppressWarnings({"rawtypes", "unchecked"}) private Map getFields() throws ModelException { IField[] fields = type.getFields(); Map result = new LinkedHashMap(); for (int i = 0; i < fields.length; i++) { IField field = fields[i]; int flags = field.getFlags(); if (PHPFlags.isStatic(flags) || PHPFlags.isConstant(flags)) { continue; } String name = field.getElementName().replace("$", ""); String getter = "get" + name.toLowerCase(); String setter = "set" + name.toLowerCase(); List l = new ArrayList(2); List<GetterSetterEntry> entries = new ArrayList<GetterSetterEntry>(); boolean getterExists = false; boolean setterExists = false; for (IMethod method : type.getMethods()) { String methodName = method.getElementName().toLowerCase(); if (methodName.startsWith("get")) { getterExists = methodName.equals(getter); } else if (methodName.startsWith("set")) { setterExists = methodName.equals(setter); } } if (!getterExists) { entries.add(new GetterSetterEntry(field, true)); } if (!setterExists) { entries.add(new GetterSetterEntry(field, false)); } if (!getterExists || !setterExists) { l.addAll(entries); } if (!l.isEmpty()) result.put(field, l.toArray(new GetterSetterEntry[l.size()])); } return result; }
public String getName() { if (name != null) return name; if (isGetter) { return name = String.format("%s()", getIdentifier()); } else { String elemName = field.getElementName(); String type = getType(); String param = ""; if (type != null && type != "") { param += type + " "; } param += elemName; return name = String.format("%s(%s)", getIdentifier(), param); } }
@Deprecated protected final String processFieldName(IField field, String token) { return field.getElementName(); }
public String getRawFieldName() { if (raw != null) return raw; return raw = field.getElementName().replace("$", ""); }