public void writeExternal(Element element) throws WriteExternalException { CommonCodeStyleSettings defaultSettings = getDefaultSettings(); Set<String> supportedFields = getSupportedFields(); if (supportedFields != null) { supportedFields.add("PARENT_SETTINGS_INSTALLED"); supportedFields.add("FORCE_REARRANGE_MODE"); } DefaultJDOMExternalizer.writeExternal(this, element, new SupportedFieldsDiffFilter(this, supportedFields, defaultSettings)); if (myIndentOptions != null) { IndentOptions defaultIndentOptions = defaultSettings != null ? defaultSettings.getIndentOptions() : null; Element indentOptionsElement = new Element(INDENT_OPTIONS_TAG); myIndentOptions.serialize(indentOptionsElement, defaultIndentOptions); if (!indentOptionsElement.getChildren().isEmpty()) { element.addContent(indentOptionsElement); } } if (myArrangementSettings != null) { Element container = new Element(ARRANGEMENT_ELEMENT_NAME); ArrangementUtil.writeExternal(container, myArrangementSettings, myLanguage); if (!container.getChildren().isEmpty()) { element.addContent(container); } } }
@Override public int compareTo(@NotNull StdArrangementMatchRule o) { final Map<ArrangementSettingsToken, Object> tokenValues = ArrangementUtil.extractTokens(getMatcher().getCondition()); final Map<ArrangementSettingsToken, Object> tokenValues1 = ArrangementUtil.extractTokens(o.getMatcher().getCondition()); final Set<ArrangementSettingsToken> tokens = tokenValues.keySet(); final Set<ArrangementSettingsToken> tokens1 = tokenValues1.keySet(); if (tokens1.containsAll(tokens)) { return tokens.containsAll(tokens1) ? 0 : 1; } else { if (tokens.containsAll(tokens1)) { return -1; } final String entryType = getEntryType(tokenValues); final String entryType1 = getEntryType(tokenValues1); final int compare = StringUtil.compare(entryType1, entryType, false); if (compare != 0 || tokens.size() == tokens1.size()) { return compare; } return tokens.size() < tokens1.size() ? 1 : -1; } }
@Nullable private Pair<ArrangementMatchCondition, ArrangementSettingsToken> buildCondition() { List<ArrangementMatchCondition> conditions = ContainerUtilRt.newArrayList(); ArrangementSettingsToken orderType = null; for (ArrangementUiComponent component : myComponents.values()) { if (!component.isEnabled() || !component.isSelected()) { continue; } ArrangementSettingsToken token = component.getToken(); if (token != null && StdArrangementTokenType.ORDER.is(token)) { orderType = token; } else { conditions.add(component.getMatchCondition()); } } if (!conditions.isEmpty()) { if (orderType == null) { orderType = StdArrangementTokens.Order.KEEP; } return Pair.create(ArrangementUtil.combine(conditions.toArray(new ArrangementMatchCondition[conditions.size()])), orderType); } else { return null; } }
public void writeExternal(Element element) throws WriteExternalException { CommonCodeStyleSettings defaultSettings = getDefaultSettings(); Set<String> supportedFields = getSupportedFields(); if (supportedFields != null) { supportedFields.add("PARENT_SETTINGS_INSTALLED"); } DefaultJDOMExternalizer.writeExternal(this, element, new SupportedFieldsDiffFilter(this, supportedFields, defaultSettings)); if (myIndentOptions != null) { IndentOptions defaultIndentOptions = defaultSettings != null ? defaultSettings.getIndentOptions() : null; Element indentOptionsElement = new Element(INDENT_OPTIONS_TAG); myIndentOptions.serialize(indentOptionsElement, defaultIndentOptions); if (!indentOptionsElement.getChildren().isEmpty()) { element.addContent(indentOptionsElement); } } if (myArrangementSettings != null) { Element container = new Element(ARRANGEMENT_ELEMENT_NAME); ArrangementUtil.writeExternal(container, myArrangementSettings, myLanguage); if (!container.getChildren().isEmpty()) { element.addContent(container); } } }
@Nullable private Pair<ArrangementMatchCondition, ArrangementSettingsToken> buildCondition() { List<ArrangementMatchCondition> conditions = ContainerUtilRt.newArrayList(); ArrangementSettingsToken orderType = null; for (ArrangementUiComponent component : myComponents.values()) { if (!component.isEnabled() || !component.isSelected()) { continue; } ArrangementSettingsToken token = component.getToken(); if (token != null && StdArrangementTokens.Order.is(token)) { orderType = token; } else { conditions.add(component.getMatchCondition()); } } if (orderType != null && !conditions.isEmpty()) { return Pair.create(ArrangementUtil.combine(conditions.toArray(new ArrangementMatchCondition[conditions.size()])), orderType); } else { return null; } }
@Override public int compareTo(@Nonnull StdArrangementMatchRule o) { final Set<ArrangementSettingsToken> tokens = ArrangementUtil.extractTokens(getMatcher().getCondition()).keySet(); final Set<ArrangementSettingsToken> tokens1 = ArrangementUtil.extractTokens(o.getMatcher().getCondition()).keySet(); if (tokens1.containsAll(tokens)) { return tokens.containsAll(tokens1) ? 0 : 1; } else { if (tokens.containsAll(tokens1)) { return -1; } final String entryType = getEntryType(tokens); final String entryType1 = getEntryType(tokens1); final int compare = StringUtil.compare(entryType, entryType1, false); if (compare != 0 || tokens.size() == tokens1.size()) { return compare; } return tokens.size() < tokens1.size() ? 1 : -1; } }
public void readExternal(Element element) throws InvalidDataException { DefaultJDOMExternalizer.readExternal(this, element); if (myIndentOptions != null) { Element indentOptionsElement = element.getChild(INDENT_OPTIONS_TAG); if (indentOptionsElement != null) { myIndentOptions.deserialize(indentOptionsElement); } } Element arrangementRulesContainer = element.getChild(ARRANGEMENT_ELEMENT_NAME); if (arrangementRulesContainer != null) { myArrangementSettings = ArrangementUtil.readExternal(arrangementRulesContainer, myLanguage); } }
@NotNull public ArrangementEntryMatcher buildMatcher(@NotNull ArrangementMatchCondition condition) throws IllegalArgumentException { ArrangementEntryMatcher matcher = ArrangementUtil.buildMatcher(condition); if (matcher == null) { matcher = myDelegate.buildMatcher(condition); } return matcher; }
@NotNull public StdArrangementMatchRule createDefaultSectionRule() { final ArrangementAtomMatchCondition type = new ArrangementAtomMatchCondition(START_SECTION); final ArrangementAtomMatchCondition text = new ArrangementAtomMatchCondition(TEXT, createDefaultSectionText()); final ArrangementMatchCondition condition = ArrangementUtil.combine(type, text); return new StdArrangementMatchRule(new StdArrangementEntryMatcher(condition)); }
@Override public int compareTo(@NotNull StdArrangementMatchRule o) { final Set<ArrangementSettingsToken> tokens = ArrangementUtil.extractTokens(getMatcher().getCondition()).keySet(); final Set<ArrangementSettingsToken> tokens1 = ArrangementUtil.extractTokens(o.getMatcher().getCondition()).keySet(); if (tokens1.containsAll(tokens)) { return tokens.containsAll(tokens1) ? 0 : 1; } else { return tokens.containsAll(tokens1) ? -1 : 0; } }
@NotNull public static StdArrangementMatchRule attrArrangementRule(@NotNull String nameFilter, @NotNull String namespaceFilter, @NotNull ArrangementSettingsToken orderType) { return new StdArrangementMatchRule(new StdArrangementEntryMatcher(ArrangementUtil.combine( new ArrangementAtomMatchCondition(StdArrangementTokens.Regexp.NAME, nameFilter), new ArrangementAtomMatchCondition(StdArrangementTokens.Regexp.XML_NAMESPACE, namespaceFilter) )), orderType); }
@Nonnull public ArrangementEntryMatcher buildMatcher(@Nonnull ArrangementMatchCondition condition) throws IllegalArgumentException { ArrangementEntryMatcher matcher = ArrangementUtil.buildMatcher(condition); if (matcher == null) { matcher = myDelegate.buildMatcher(condition); } return matcher; }
@Nullable private static StdArrangementMatchRule createSectionRule(@Nullable String comment, @Nonnull ArrangementSettingsToken token) { if (StringUtil.isEmpty(comment)) { return null; } final ArrangementAtomMatchCondition type = new ArrangementAtomMatchCondition(token); final ArrangementAtomMatchCondition text = new ArrangementAtomMatchCondition(StdArrangementTokens.Regexp.TEXT, comment); final ArrangementMatchCondition condition = ArrangementUtil.combine(type, text); return new StdArrangementMatchRule(new StdArrangementEntryMatcher(condition)); }
@Nonnull public StdArrangementMatchRule createDefaultSectionRule() { final ArrangementAtomMatchCondition type = new ArrangementAtomMatchCondition(START_SECTION); final ArrangementAtomMatchCondition text = new ArrangementAtomMatchCondition(TEXT, createDefaultSectionText()); final ArrangementMatchCondition condition = ArrangementUtil.combine(type, text); return new StdArrangementMatchRule(new StdArrangementEntryMatcher(condition)); }
@NotNull public static StdArrangementMatchRule attrArrangementRule( @NotNull String nameFilter, @NotNull String namespaceFilter, @NotNull ArrangementSettingsToken orderType) { return new StdArrangementMatchRule(new StdArrangementEntryMatcher(ArrangementUtil.combine(new ArrangementAtomMatchCondition (StdArrangementTokens.Regexp.NAME, nameFilter), new ArrangementAtomMatchCondition(StdArrangementTokens.Regexp.XML_NAMESPACE, namespaceFilter))), orderType); }
@NotNull @Override public List<StdArrangementMatchRule> getRules() { return ArrangementUtil.collectMatchRules(mySectionRules); }
@NotNull private static StdArrangementMatchRule createSectionRule(@NotNull String comment, @NotNull ArrangementSettingsToken token) { final ArrangementAtomMatchCondition text = new ArrangementAtomMatchCondition(StdArrangementTokens.Regexp.TEXT, comment); final ArrangementMatchCondition condition = ArrangementUtil.combine(new ArrangementAtomMatchCondition(token), text); return new StdArrangementMatchRule(new StdArrangementEntryMatcher(condition)); }
@Nonnull @Override public List<StdArrangementMatchRule> getRules() { return ArrangementUtil.collectMatchRules(mySectionRules); }