private CustomSpreadsheetResultOpenClass copyCustomSpreadsheetResult() { CustomSpreadsheetResultOpenClass type = new CustomSpreadsheetResultOpenClass(getName(), getRowNames(), getColumnNames(), getRowTitles(), getColumnTitles()); for (IOpenField field : getFields().values()) { type.addField(field); } type.setMetaInfo(getMetaInfo()); return type; }
@Override public IOpenClass copy() { return copyCustomSpreadsheetResult(); }
@Override public void updateOpenClass(IOpenClass openClass) { CustomSpreadsheetResultOpenClass customSpreadsheetResultOpenClass = (CustomSpreadsheetResultOpenClass) openClass; customSpreadsheetResultOpenClass.extendSpreadsheetResult(getRowNames(), getColumnNames(), getRowTitles(), getColumnTitles(), getFields().values()); validate(customSpreadsheetResultOpenClass, getFields().values()); }
private static CustomSpreadsheetResultOpenClass merge(CustomSpreadsheetResultOpenClass type1, CustomSpreadsheetResultOpenClass type2) { CustomSpreadsheetResultOpenClass mergedCustomSpreadsheetResultOpenClass = new CustomSpreadsheetResultOpenClass( "SpreadsheetResult"); Map<String, IOpenField> fields1 = type1.getFields(); Map<String, IOpenField> fields2 = type2.getFields(); Set<String> fieldNames = new HashSet<>(); fieldNames.addAll(fields1.keySet()); if (field1.getType().equals(field2.getType())) { mergedCustomSpreadsheetResultOpenClass .addField(new CustomSpreadsheetResultField(mergedCustomSpreadsheetResultOpenClass, fieldName, field1.getType())); } else { mergedCustomSpreadsheetResultOpenClass .addField(new CustomSpreadsheetResultField(mergedCustomSpreadsheetResultOpenClass, fieldName, JavaOpenClass.OBJECT)); mergedCustomSpreadsheetResultOpenClass.addField(fields1.get(fieldName)); } else { mergedCustomSpreadsheetResultOpenClass.addField(fields2.get(fieldName));
private CustomSpreadsheetResultOpenClass initCustomSpreadsheetResultType() { Map<String, IOpenField> spreadsheetOpenClassFields = getSpreadsheetType().getFields(); spreadsheetOpenClassFields.remove("this"); String typeName = SPREADSHEETRESULT_TYPE_PREFIX + getName(); CustomSpreadsheetResultOpenClass customSpreadsheetResultOpenClass = new CustomSpreadsheetResultOpenClass(typeName, getRowNames(), getColumnNames(), getRowTitles(), getColumnTitles()); customSpreadsheetResultOpenClass.setMetaInfo(new TableMetaInfo("Spreadsheet", getName(), getSourceUrl())); for (IOpenField field : spreadsheetOpenClassFields.values()) { CustomSpreadsheetResultField customSpreadsheetResultField = new CustomSpreadsheetResultField(customSpreadsheetResultOpenClass, field.getName(), field.getType()); customSpreadsheetResultOpenClass.addField(customSpreadsheetResultField); } return customSpreadsheetResultOpenClass; }
private void validate(CustomSpreadsheetResultOpenClass customSpreadsheetResultOpenClass, Collection<IOpenField> values) { List<String> errorMessages = new ArrayList<String>(); for (IOpenField field : values) { IOpenField existedField = customSpreadsheetResultOpenClass.getField(field.getName()); if (!existedField.getType().isAssignableFrom(field.getType())) { errorMessages.add(getName() + "." + field.getName() + "(expected: " + existedField.getType() .getName() + ", found: " + field.getType().getName() + ")"); } } if (!errorMessages.isEmpty()) { StringBuilder sb = new StringBuilder(); boolean first = true; for (String errorMessage : errorMessages) { if (!first) { sb.append(", "); } else { first = false; } sb.append(errorMessage); } throw new OpenlNotCheckedException("Incompatible type usage in spreadsheet fields: " + sb.toString()); } }
for (IOpenField field : fields) { if (newFieldNames.contains(field.getName())) { addField(field);