Java Code Examples for javax.swing.text.Document#remove()

The following examples show how to use javax.swing.text.Document#remove() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: AbbrevDetection.java    From netbeans with Apache License 2.0 6 votes vote down vote up
private static boolean expand(CodeTemplateManagerOperation op, JTextComponent component, int abbrevStartOffset, CharSequence abbrev) {
    op.waitLoaded();
    CodeTemplate ct = op.findByAbbreviation(abbrev.toString());
    if (ct != null) {
        if (accept(ct, CodeTemplateManagerOperation.getTemplateFilters(component, abbrevStartOffset))) {
            Document doc = component.getDocument();
            sendUndoableEdit(doc, CloneableEditorSupport.BEGIN_COMMIT_GROUP);
            try {
                // Remove the abbrev text
                doc.remove(abbrevStartOffset, abbrev.length());
                ct.insert(component);
            } catch (BadLocationException ble) {
            } finally {
                sendUndoableEdit(doc, CloneableEditorSupport.END_COMMIT_GROUP);
            }
            return true;
        }
    }
    return false;
}
 
Example 2
Source File: ModificationResult.java    From netbeans with Apache License 2.0 6 votes vote down vote up
private static void processDocumentLocked(Document doc, Difference diff) throws BadLocationException {
    switch (diff.getKind()) {
        case INSERT:
            doc.insertString(diff.getStartPosition().getOffset(), diff.getNewText(), null);
            break;
        case REMOVE:
            doc.remove(diff.getStartPosition().getOffset(), diff.getEndPosition().getOffset() - diff.getStartPosition().getOffset());
            break;
        case CHANGE: {
            // first insert the new content, THEN remove the old one. In situations where the content AFTER the
            // change is not writable this ordering allows to replace the content, but if we first delete, 
            // replacement cannot be inserted into the nonwritable area.
            int offs = diff.getStartPosition().getOffset();
            int removeLen = diff.getEndPosition().getOffset() - offs;
            
            // [NETBEANS-4270] Can't use "delta = diff.getNewText().length()".
            // doc.insertString may filter chars, e.g. '\r', and change length.
            int initialLength = doc.getLength();
            doc.insertString(offs, diff.getNewText(), null);
            int delta = doc.getLength() - initialLength;
            doc.remove(delta + offs, removeLen);
            break;
        }
    }
}
 
Example 3
Source File: Util.java    From netbeans with Apache License 2.0 6 votes vote down vote up
public static Document setDocumentContentTo(Document doc, InputStream in) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    StringBuffer sbuf = new StringBuffer();
    try {
        String line = null;
        while ((line = br.readLine()) != null) {
            sbuf.append(line);
            sbuf.append(System.getProperty("line.separator"));
        }
    } finally {
        br.close();
    }
    doc.remove(0, doc.getLength());
    doc.insertString(0,sbuf.toString(),null);
    return doc;
}
 
Example 4
Source File: Util.java    From netbeans with Apache License 2.0 6 votes vote down vote up
public static Document setDocumentContentTo(Document doc, InputStream in) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    StringBuffer sbuf = new StringBuffer();
    try {
        String line = null;
        while ((line = br.readLine()) != null) {
            sbuf.append(line);
            sbuf.append(System.getProperty("line.separator"));
        }
    } finally {
        br.close();
    }
    doc.remove(0, doc.getLength());
    doc.insertString(0,sbuf.toString(),null);
    return doc;
}
 
Example 5
Source File: CommandCompletionProvider.java    From netbeans with Apache License 2.0 6 votes vote down vote up
@Override
public void defaultAction(JTextComponent component) {
    if (component == null) {
        return;
    }
    Completion.get().hideAll();
    
    Document doc = component.getDocument();
    if (doc == null) {
        return;
    }
    int caret = component.getCaretPosition();
    int l = caret - fromOffset;
    try {
        doc.insertString(fromOffset, "/" + command + " ", null); // NOI18N
        doc.remove(fromOffset + command.length() + 2, l);
    } catch (BadLocationException ex) {
        // ignore
    }
}
 
Example 6
Source File: PositionRefTest.java    From netbeans with Apache License 2.0 6 votes vote down vote up
/**
    * Creates a PositionRef biased backwards and verifies it behaves correctly,
    * then closes and reopens the document and checks again
    */
   public void testBiasSurvivesStateChanges() throws Exception {
// open the document
       Document doc = support.openDocument();
       
       PositionRef back = support.createPositionRef(3, Position.Bias.Backward);
       PositionRef forw = support.createPositionRef(3, Position.Bias.Forward);
       
       doc.insertString(3, "_", null);
       assertEquals("Backwards position should not move for insert at its position",
               3, back.getOffset());
       assertEquals("Forwards position should move for insert at its position",
               4, forw.getOffset());        

       // move positions at the same offset again
       doc.remove(3, 1);

       support.close();
       doc = support.openDocument();

       doc.insertString(3, "_", null);
       assertEquals("Backwards position should not move for insert at its position",
               3, back.getOffset());
       assertEquals("Forwards position should move for insert at its position",
               4, forw.getOffset());        
   }
 
Example 7
Source File: ChatMessagePanel.java    From triplea with GNU General Public License v3.0 6 votes vote down vote up
/** Show only the first n lines. */
public static void trimLines(final Document doc, final int lineCount) {
  if (doc.getLength() < lineCount) {
    return;
  }
  try {
    final String text = doc.getText(0, doc.getLength());
    int returnsFound = 0;
    for (int i = text.length() - 1; i >= 0; i--) {
      if (text.charAt(i) == '\n') {
        returnsFound++;
      }
      if (returnsFound == lineCount) {
        doc.remove(0, i);
        return;
      }
    }
  } catch (final BadLocationException e) {
    log.log(Level.SEVERE, "There was an Error whilst trying trimming Chat", e);
  }
}
 
Example 8
Source File: HintTestTest.java    From netbeans with Apache License 2.0 6 votes vote down vote up
@Test
public void testNonJavaChangesOpenedInEditor214197() throws Exception {
    HintTest ht = HintTest.create()
                          .input("package test;\n" +
                                 "public class Test { }\n")
                          .input("test/test.txt", "1\n#foobar\n\n2", false);
    FileObject resource = ht.getSourceRoot().getFileObject("test/test.txt");
    DataObject od = DataObject.find(resource);
    EditorCookie ec = od.getLookup().lookup(EditorCookie.class);
    Document doc = ec.openDocument();
    doc.remove(0, doc.getLength());
    doc.insertString(0, "5\n6\n", null);
    ht.run(NonJavaChanges.class)
      .findWarning("1:13-1:17:verifier:Test")
      .applyFix(false)
      .assertVerbatimOutput("test/test.txt", "6\n7\n");
    Assert.assertEquals("1\n#foobar\n\n2", resource.asText("UTF-8"));
    Assert.assertEquals("6\n7\n", doc.getText(0, doc.getLength()));
}
 
Example 9
Source File: PGrammarPane.java    From PolyGlot with MIT License 5 votes vote down vote up
private void imageReplaceSelection(String content) {
    Document doc = getStyledDocument();
    if (doc != null) {
        try {
            Caret caret = getCaret();
            boolean composedTextSaved = saveComposedText(caret.getDot());
            int p0 = Math.min(caret.getDot(), caret.getMark());
            int p1 = Math.max(caret.getDot(), caret.getMark());
            AttributeSet attr = getInputAttributes().copyAttributes();
            if (doc instanceof AbstractDocument) {
                ((AbstractDocument) doc).replace(p0, p1 - p0, content, attr);
            } else {
                if (p0 != p1) {
                    doc.remove(p0, p1 - p0);
                }
                if (content != null && !content.isEmpty()) {
                    doc.insertString(p0, content, attr);
                }
            }
            if (composedTextSaved) {
                restoreComposedText();
            }
        } catch (BadLocationException e) {
            IOHandler.writeErrorLog(e);
            UIManager.getLookAndFeel().provideErrorFeedback(PGrammarPane.this);
        }
    }
}
 
Example 10
Source File: TokenListUpdaterExtraTest.java    From netbeans with Apache License 2.0 5 votes vote down vote up
public void testTokenCountWasCalledInUpdater() throws Exception {
    Document doc = new ModificationTextDocument();
    String text = "+/* */";
    doc.insertString(0, text, null);
    
    doc.putProperty(Language.class, TestTokenId.language());
    TokenHierarchy<?> hi = TokenHierarchy.get(doc);
    TokenSequence<?> ts;
    ((AbstractDocument)doc).readLock();
    try {
        ts = hi.tokenSequence();
        assertTrue(ts.moveNext());
        LexerTestUtilities.assertTokenEquals(ts,TestTokenId.PLUS, "+", -1);
    } finally {
        ((AbstractDocument)doc).readUnlock();
    }

    doc.remove(1, 3); // Remove "/* "
    ((AbstractDocument)doc).readLock();
    try {
        ts = hi.tokenSequence();
        ts.moveEnd();
        // Extra ending '\n' of the document returned by DocumentUtilities.getText(doc) and lexed
        assertTrue(ts.movePrevious());
        LexerTestUtilities.assertTokenEquals(ts,TestTokenId.WHITESPACE, "\n", -1);
        assertTrue(ts.movePrevious());
        LexerTestUtilities.assertTokenEquals(ts,TestTokenId.DIV, "/", -1);
    } finally {
        ((AbstractDocument)doc).readUnlock();
    }
}
 
Example 11
Source File: MessageConsole.java    From portable-ftp-server with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Removes the lines.
 *
 * @param e the e
 */
private void removeLines(DocumentEvent e) {
	Document document = e.getDocument();
	Element root = document.getDefaultRootElement();
	while (root.getElementCount() > maximumLines) {
		Element line = root.getElement(0);
		int end = line.getEndOffset();
		try {
			document.remove(0, end);
		} catch(BadLocationException ble) {
			//System.out.println(ble);
		}
	}
}
 
Example 12
Source File: SaasClientCodeGenerator.java    From netbeans with Apache License 2.0 5 votes vote down vote up
protected int insert(String s, int start, int end, Document doc, boolean reformat)
        throws BadLocationException {
    try {
        doc.remove(start, end - start);
        doc.insertString(start, s, null);
    } catch (BadLocationException ble) {}
    
    if(reformat)
        reformat(doc, 0, doc.getLength());
    
    return start;
}
 
Example 13
Source File: MessagePanel.java    From bigtable-sql with Apache License 2.0 5 votes vote down vote up
public void actionPerformed(ActionEvent evt)
{
	try
	{
	    Document doc = MessagePanel.this.getDocument();
	    doc.remove(0, doc.getLength());
	    _lastMessage = null;
	}
	catch (BadLocationException ex)
	{
		s_log.error("Error clearing document", ex);
	}
}
 
Example 14
Source File: JavadocCompletionItem.java    From netbeans with Apache License 2.0 5 votes vote down vote up
private static void completeAsUser(JTextComponent comp, String what, int where) {
    Document doc = comp.getDocument();
    try {
        int end = comp.getSelectionEnd();
        int len = end - where;
        if (len > 0) {
            doc.remove(where, len);
        }
        doc.insertString(where, what, null);
        comp.setCaretPosition(where + what.length());
    } catch (BadLocationException ex) {
        Exceptions.printStackTrace(ex);
    }
}
 
Example 15
Source File: EditHistoryTest.java    From netbeans with Apache License 2.0 5 votes vote down vote up
private void remove(Document document, EditHistory history, int offset, int length) throws Exception {
    try {
        document.addDocumentListener(history);
        document.remove(offset, length);
    } finally {
        document.removeDocumentListener(history);
    }
}
 
Example 16
Source File: TestCatalogModel.java    From netbeans with Apache License 2.0 5 votes vote down vote up
private Document  getDocument(FileObject fo){
    Document result = null;
    if (documentPooling) {
        result = documentPool().get(fo);
    }
    if (result != null) return result;
    try {
        
        File file = FileUtil.toFile(fo);
        FileInputStream fis = new FileInputStream(file);
        byte buffer[] = new byte[fis.available()];
        result = new org.netbeans.editor.BaseDocument(
                org.netbeans.modules.xml.text.syntax.XMLKit.class, false);
        result.remove(0, result.getLength());
        fis.read(buffer);
        fis.close();
        String str = new String(buffer);
        result.insertString(0,str,null);
        
    } catch (Exception dObjEx) {
        return null;
    }
    if (documentPooling) {
        documentPool().put(fo, result);
    }
    return result;
}
 
Example 17
Source File: HtmlDeletedTextInterceptor.java    From netbeans with Apache License 2.0 5 votes vote down vote up
@Override
public void remove(Context context) throws BadLocationException {
    Document doc = context.getDocument();
    int dotPos = context.getOffset();
    char ch = context.getText().charAt(0);
    if (ch == '\'' || ch == '"') { //NOI18N
        TokenSequence<HTMLTokenId> ts = LexUtilities.getTokenSequence((BaseDocument) doc, dotPos, HTMLTokenId.language());
        if (ts != null) {
            int diff = ts.move(dotPos);
            if (diff != 1) {
                //we only handle situation where leading quote is removed from an attribute value -- the diff must be 1
                return;
            }
            if (!ts.moveNext()) {
                return;
            }
            Token<HTMLTokenId> token = ts.token();
            if (token.id() == HTMLTokenId.VALUE || token.id() == HTMLTokenId.VALUE_CSS || token.id() == HTMLTokenId.VALUE_JAVASCRIPT) {
                char first = token.text().charAt(0);
                if (first == ch) {
                    //user pressed backspace in empty value: <div class="|" + BACKSPACE
                    //now the text is: <div class=|"
                    //expected result: remove the second quote
                    doc.remove(dotPos - 1, 1);
                }
            }
        }

    }
}
 
Example 18
Source File: NameAutocompleter.java    From plugins with GNU General Public License v3.0 4 votes vote down vote up
@Override
public void keyTyped(KeyEvent e)
{
	if (!hiscoreConfig.autocomplete())
	{
		return;
	}

	final JTextComponent input = (JTextComponent) e.getSource();
	final String inputText = input.getText();

	// Only autocomplete if the selection end is at the end of the text.
	if (input.getSelectionEnd() != inputText.length())
	{
		return;
	}

	// Character to be inserted at the selection start.
	final String charToInsert = Character.toString(e.getKeyChar());

	// Don't attempt to autocomplete if the name is invalid.
	// This condition is also true when the user presses a key like backspace.
	if (INVALID_CHARS.matcher(charToInsert).find()
		|| INVALID_CHARS.matcher(inputText).find())
	{
		return;
	}

	// Check if we are already autocompleting.
	if (autocompleteName != null && autocompleteNamePattern.matcher(inputText).matches())
	{
		if (isExpectedNext(input, charToInsert))
		{
			try
			{
				// Insert the character and move the selection.
				final int insertIndex = input.getSelectionStart();
				Document doc = input.getDocument();
				doc.remove(insertIndex, 1);
				doc.insertString(insertIndex, charToInsert, null);
				input.select(insertIndex + 1, input.getSelectionEnd());
			}
			catch (BadLocationException ex)
			{
				log.warn("Could not insert character.", ex);
			}

			// Prevent default behavior.
			e.consume();
		}
		else // Character to insert does not match current autocompletion. Look for another name.
		{
			newAutocomplete(e);
		}
	}
	else // Search for a name to autocomplete
	{
		newAutocomplete(e);
	}
}
 
Example 19
Source File: TextmateLexerTest.java    From netbeans with Apache License 2.0 4 votes vote down vote up
public void testRestart() throws Exception {
    clearWorkDir();

    FileObject grammar = FileUtil.createData(FileUtil.getConfigRoot(), "Editors/text/test/grammar.json");
    try (OutputStream out = grammar.getOutputStream();
         Writer w = new OutputStreamWriter(out)) {
        w.write("{ \"scopeName\": \"test\", " +
                " \"patterns\": [\n" +
                "  { \"name\": \"string.test\",\n" +
                "    \"begin\": \"x([^x]+)x\",\n" +
                "    \"end\": \"x\\\\1x\"\n" +
                "   },\n" +
                "  { \"name\": \"whitespace.test\",\n" +
                "    \"match\": \" +\"\n" +
                "   }\n" +
                "]}\n");
    }
    grammar.setAttribute(LanguageHierarchyImpl.GRAMMAR_MARK, "test");
    Document doc = new PlainDocument();
    doc.insertString(0, " xaax xbbx\nxccx xaax ", null);
    doc.putProperty(Language.class, new LanguageHierarchyImpl("text/test", "test").language());
    TokenHierarchy<Document> hi = TokenHierarchy.get(doc);
    TokenSequence<?> ts = hi.tokenSequence();
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " ");
    assertTokenProperties(ts, "test", "whitespace.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xaax");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " xbbx\n");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xccx ");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xaax");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " ");
    assertTokenProperties(ts, "test", "whitespace.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.UNTOKENIZED, "\n");
    assertFalse(ts.moveNext());
    doc.insertString(8, "b", null);
    ts = hi.tokenSequence();
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " ");
    assertTokenProperties(ts, "test", "whitespace.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xaax");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " xbbbx\n");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xccx ");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xaax");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " ");
    assertTokenProperties(ts, "test", "whitespace.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.UNTOKENIZED, "\n");
    assertFalse(ts.moveNext());
    doc.insertString(14, "c", null);
    ts = hi.tokenSequence();
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " ");
    assertTokenProperties(ts, "test", "whitespace.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xaax");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " xbbbx\n");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xcccx ");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xaax");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " ");
    assertTokenProperties(ts, "test", "whitespace.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.UNTOKENIZED, "\n");
    assertFalse(ts.moveNext());
    doc.insertString(3, "a", null);
    ts = hi.tokenSequence();
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " ");
    assertTokenProperties(ts, "test", "whitespace.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xaaax");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " xbbbx\n");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xcccx xaax \n");
    assertFalse(ts.moveNext());
    doc.remove(3, 1);
    ts = hi.tokenSequence();
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " ");
    assertTokenProperties(ts, "test", "whitespace.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xaax");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " xbbbx\n");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xcccx ");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, "xaax");
    assertTokenProperties(ts, "test", "string.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.TEXTMATE, " ");
    assertTokenProperties(ts, "test", "whitespace.test");
    LexerTestUtilities.assertNextTokenEquals(ts, TextmateTokenId.UNTOKENIZED, "\n");
    assertFalse(ts.moveNext());
}
 
Example 20
Source File: XDMUtil.java    From netbeans with Apache License 2.0 4 votes vote down vote up
public List<Difference> compareXML(String firstDoc,  
        String secondDoc, ComparisonCriteria type, boolean filterWhiteSpace) 
throws BadLocationException, IOException {
    Document sd1 = new BaseDocument(true, "text/xml"); //NOI18N
    XDMModel m1 = createXDMModel(sd1);
    sd1.remove(0, XML_PROLOG.length());
    sd1.insertString(0, firstDoc, null);
    m1.sync();
    fDoc = m1.getDocument();        
    
    Document sd2 = new BaseDocument(true, "text/xml"); //NOI18N
    sd2.getText(0, sd2.getLength());
    XDMModel m2 = createXDMModel(sd2);        
    sd2.remove(0, XML_PROLOG.length());
    sd2.insertString(0, secondDoc, null);
    m2.setPretty(true);
    m2.sync();
    sDoc = m2.getDocument();
    
    XDUDiffFinder dif = new XDUDiffFinder(createElementIdentity());
    List<Difference> diffs = dif.findDiff(m1.getDocument(), m2.getDocument());
    if(filterWhiteSpace)
        diffs = XDUDiffFinder.filterWhitespace(diffs);//filter whitespace diffs
    if(type == ComparisonCriteria.EQUAL) {//remove order change diffs
        List<Difference> filteredDiffs = new ArrayList<Difference>();
        for(Difference d:diffs) {
            if(d instanceof Change) {
                Change c = (Change)d;
                if(c.isPositionChanged())//node (element/text) pos change
                    if(!c.isTokenChanged() && !c.isAttributeChanged())
                        continue;
                if(c.isAttributeChanged() && !c.isTokenChanged()) {//attr change only
                    List<Change.AttributeDiff> removeList = 
                            new ArrayList<Change.AttributeDiff>();
                    List<Change.AttributeDiff> attrChanges = c.getAttrChanges();
                    for(int i=0;i<attrChanges.size();i++) {
                        if(attrChanges.get(i) instanceof Change.AttributeChange) {
                            Change.AttributeChange ac = 
                                (Change.AttributeChange) attrChanges.get(i);
                            if(ac.isPositionChanged() && !ac.isTokenChanged())//attr pos change only
                                removeList.add(ac);
                        }
                    }
                    for(int i=0;i<removeList.size();i++)
                        c.removeAttrChanges(removeList.get(i));
                    if(c.getAttrChanges().size() == 0) //filter this diff
                        continue;
                }
                filteredDiffs.add(d);
            } else {
                filteredDiffs.add(d);
            }
        }
        return filteredDiffs;
    }
    
    //remove pseudo attr position changes
    removePseudoAttrPosChanges(diffs);
    
    filterSchemaLocationDiffs(diffs);
    
    return diffs;
}