Skip to content

Commit

Permalink
Merge pull request #46 from SeeSharpSoft/fb_codacy
Browse files Browse the repository at this point in the history
[INTERNAL] more codacy clean up
  • Loading branch information
SeeSharpSoft committed Jul 4, 2018
2 parents 20628c6 + cc2a606 commit df16f1a
Show file tree
Hide file tree
Showing 11 changed files with 129 additions and 127 deletions.
Expand Up @@ -7,51 +7,6 @@

public class CsvColumnInfo<T> {

public class RowInfo {
private final T myElement;
private final int myRow;
private final TextRange myTextRange;

RowInfo(T element, int row) {
this(element, row, -1, -1);
}

RowInfo(@NotNull T element, @NotNull int row, int startIndex, int endIndex) {
this.myElement = element;
this.myRow = row;
if (startIndex <= endIndex && startIndex >= 0) {
this.myTextRange = TextRange.create(startIndex, endIndex);
} else {
this.myTextRange = null;
}
}

public T getElement() {
return myElement;
}

public int getRowIndex() {
return myRow;
}

public TextRange getTextRange() {
return myTextRange;
}

@Override
public int hashCode() {
return myElement.hashCode();
}

@Override
public boolean equals(Object other) {
if (!(other instanceof CsvColumnInfo.RowInfo)) {
return false;
}
return this.myElement.equals(((RowInfo) other).myElement);
}
}

private int myColumnIndex;
private int myMaxLength;
private Map<T, RowInfo> myElementInfos;
Expand Down Expand Up @@ -95,7 +50,7 @@ public List<T> getElements() {
}

protected void put(@NotNull T element, @NotNull RowInfo rowInfo) {
RowInfo previous = myElementInfos.put(element, rowInfo);
myElementInfos.put(element, rowInfo);
if (this.getSize() <= rowInfo.myRow) {
this.mySize = rowInfo.myRow + 1;
}
Expand Down Expand Up @@ -131,4 +86,49 @@ public boolean isHeaderElement(@NotNull T element) {
public T getHeaderElement() {
return this.myHeaderElement;
}

public class RowInfo {
private final T myElement;
private final int myRow;
private final TextRange myTextRange;

RowInfo(T element, int row) {
this(element, row, -1, -1);
}

RowInfo(@NotNull T element, @NotNull int row, int startIndex, int endIndex) {
this.myElement = element;
this.myRow = row;
if (startIndex <= endIndex && startIndex >= 0) {
this.myTextRange = TextRange.create(startIndex, endIndex);
} else {
this.myTextRange = null;
}
}

public T getElement() {
return myElement;
}

public int getRowIndex() {
return myRow;
}

public TextRange getTextRange() {
return myTextRange;
}

@Override
public int hashCode() {
return myElement.hashCode();
}

@Override
public boolean equals(Object other) {
if (!(other instanceof CsvColumnInfo.RowInfo)) {
return false;
}
return this.myElement.equals(((RowInfo) other).myElement);
}
}
}
57 changes: 30 additions & 27 deletions src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvHelper.java
Expand Up @@ -41,56 +41,59 @@ public static IElementType getElementType(PsiElement element) {
return element == null || element.getNode() == null ? null : element.getNode().getElementType();
}

public static PsiElement getParentFieldElement(PsiElement element) {
IElementType elementType = CsvHelper.getElementType(element);
public static PsiElement getParentFieldElement(final PsiElement element) {
PsiElement currentElement = element;
IElementType elementType = CsvHelper.getElementType(currentElement);

if (elementType == CsvTypes.COMMA || elementType == CsvTypes.CRLF) {
element = element.getPrevSibling();
elementType = CsvHelper.getElementType(element);
currentElement = currentElement.getPrevSibling();
elementType = CsvHelper.getElementType(currentElement);
}

if (elementType == CsvTypes.RECORD) {
element = element.getLastChild();
elementType = CsvHelper.getElementType(element);
currentElement = currentElement.getLastChild();
elementType = CsvHelper.getElementType(currentElement);
}

if (elementType == TokenType.WHITE_SPACE) {
if (CsvHelper.getElementType(element.getParent()) == CsvTypes.FIELD) {
element = element.getParent();
} else if (CsvHelper.getElementType(element.getPrevSibling()) == CsvTypes.FIELD) {
element = element.getPrevSibling();
} else if (CsvHelper.getElementType(element.getNextSibling()) == CsvTypes.FIELD) {
element = element.getNextSibling();
if (CsvHelper.getElementType(currentElement.getParent()) == CsvTypes.FIELD) {
currentElement = currentElement.getParent();
} else if (CsvHelper.getElementType(currentElement.getPrevSibling()) == CsvTypes.FIELD) {
currentElement = currentElement.getPrevSibling();
} else if (CsvHelper.getElementType(currentElement.getNextSibling()) == CsvTypes.FIELD) {
currentElement = currentElement.getNextSibling();
} else {
element = null;
currentElement = null;
}
} else {
while (element != null && elementType != CsvTypes.FIELD) {
element = element.getParent();
elementType = CsvHelper.getElementType(element);
while (currentElement != null && elementType != CsvTypes.FIELD) {
currentElement = currentElement.getParent();
elementType = CsvHelper.getElementType(currentElement);
}
}
return element;
return currentElement;
}

public static PsiElement getPreviousCRLF(PsiElement recordElement) {
while (recordElement != null) {
if (CsvHelper.getElementType(recordElement) == CsvTypes.CRLF) {
public static PsiElement getPreviousCRLF(final PsiElement element) {
PsiElement currentElement = element;
while (currentElement != null) {
if (CsvHelper.getElementType(currentElement) == CsvTypes.CRLF) {
break;
}
recordElement = recordElement.getPrevSibling();
currentElement = currentElement.getPrevSibling();
}
return recordElement;
return currentElement;
}

public static PsiElement getNextCRLF(PsiElement recordElement) {
while (recordElement != null) {
if (CsvHelper.getElementType(recordElement) == CsvTypes.CRLF) {
public static PsiElement getNextCRLF(final PsiElement element) {
PsiElement currentElement = element;
while (currentElement != null) {
if (CsvHelper.getElementType(currentElement) == CsvTypes.CRLF) {
break;
}
recordElement = recordElement.getNextSibling();
currentElement = currentElement.getNextSibling();
}
return recordElement;
return currentElement;
}

public static PsiElement getPreviousSeparator(PsiElement fieldElement) {
Expand Down
Expand Up @@ -36,12 +36,13 @@ public static int getTextLength(ASTNode node, CodeStyleSettings codeStyleSetting
return length;
}

public static ASTNode getRoot(ASTNode node) {
public static ASTNode getRoot(final ASTNode node) {
ASTNode currentNode = node;
ASTNode parent;
while ((parent = node.getTreeParent()) != null) {
node = parent;
while ((parent = currentNode.getTreeParent()) != null) {
currentNode = parent;
}
return node;
return currentNode;
}

public static SpacingBuilder createSpaceBuilder(CodeStyleSettings settings) {
Expand Down
Expand Up @@ -21,13 +21,14 @@ public final class CsvIntentionHelper {

private static final Logger LOG = Logger.getInstance("#net.seesharpsoft.intellij.plugins.csv.inspection.CsvIntentionHelper");

public static List<PsiElement> getChildren(PsiElement element) {
public static List<PsiElement> getChildren(final PsiElement element) {
PsiElement currentElement = element;
List<PsiElement> children = new ArrayList<>();
if (element != null) {
element = element.getFirstChild();
while (element != null) {
children.add(element);
element = element.getNextSibling();
if (currentElement != null) {
currentElement = currentElement.getFirstChild();
while (currentElement != null) {
children.add(currentElement);
currentElement = currentElement.getNextSibling();
}
}
return children;
Expand Down Expand Up @@ -107,12 +108,11 @@ public static void unquoteAll(@NotNull Project project, @NotNull PsiFile psiFile
}
}

public static void quoteValue(@NotNull Project project, @NotNull PsiElement element) {
public static void quoteValue(@NotNull Project project, @NotNull final PsiElement element) {
try {
Document document = PsiDocumentManager.getInstance(project).getDocument(element.getContainingFile());
List<Integer> quotePositions = new ArrayList<>();

element = CsvHelper.getParentFieldElement(element);
int quotePosition = getOpeningQuotePosition(element.getFirstChild(), element.getLastChild());
if (quotePosition != -1) {
quotePositions.add(quotePosition);
Expand All @@ -130,12 +130,11 @@ public static void quoteValue(@NotNull Project project, @NotNull PsiElement elem
}
}

public static void unquoteValue(@NotNull Project project, @NotNull PsiElement element) {
public static void unquoteValue(@NotNull Project project, @NotNull final PsiElement element) {
try {
Document document = PsiDocumentManager.getInstance(project).getDocument(element.getContainingFile());
List<Integer> quotePositions = new ArrayList<>();

element = CsvHelper.getParentFieldElement(element);
if (CsvHelper.getElementType(element.getFirstChild()) == CsvTypes.QUOTE) {
quotePositions.add(element.getFirstChild().getTextOffset());
}
Expand All @@ -149,7 +148,8 @@ public static void unquoteValue(@NotNull Project project, @NotNull PsiElement el
}
}

public static String addQuotes(String text, List<Integer> quotePositions) {
public static String addQuotes(final String original, List<Integer> quotePositions) {
String text = original;
int offset = 0;
quotePositions.sort(Integer::compareTo);
for (int position : quotePositions) {
Expand All @@ -160,7 +160,8 @@ public static String addQuotes(String text, List<Integer> quotePositions) {
return text;
}

public static String removeQuotes(String text, List<Integer> quotePositions) {
public static String removeQuotes(final String original, List<Integer> quotePositions) {
String text = original;
int offset = 0;
quotePositions.sort(Integer::compareTo);
for (int position : quotePositions) {
Expand Down Expand Up @@ -194,19 +195,20 @@ public static int getOpeningQuotePosition(PsiElement errorElement) {

}

public static PsiElement findQuotePositionsUntilSeparator(PsiElement element, List<Integer> quotePositions) {
public static PsiElement findQuotePositionsUntilSeparator(final PsiElement element, List<Integer> quotePositions) {
PsiElement currentElement = element;
PsiElement separatorElement = null;
while (separatorElement == null && element != null) {
if (CsvHelper.getElementType(element) == CsvTypes.COMMA || CsvHelper.getElementType(element) == CsvTypes.CRLF) {
separatorElement = element;
while (separatorElement == null && currentElement != null) {
if (CsvHelper.getElementType(currentElement) == CsvTypes.COMMA || CsvHelper.getElementType(currentElement) == CsvTypes.CRLF) {
separatorElement = currentElement;
continue;
}
if (element.getFirstChild() != null) {
separatorElement = findQuotePositionsUntilSeparator(element.getFirstChild(), quotePositions);
} else if (element.getText().equals("\"")) {
quotePositions.add(element.getTextOffset());
if (currentElement.getFirstChild() != null) {
separatorElement = findQuotePositionsUntilSeparator(currentElement.getFirstChild(), quotePositions);
} else if (currentElement.getText().equals("\"")) {
quotePositions.add(currentElement.getTextOffset());
}
element = element.getNextSibling();
currentElement = currentElement.getNextSibling();
}
return separatorElement;
}
Expand Down
Expand Up @@ -19,12 +19,12 @@ public CsvQuoteValueIntentionAction() {
}

@Override
public boolean isAvailable(@NotNull Project project, Editor editor, @Nullable PsiElement element) {
if (!super.isAvailable(project, editor, element)) {
public boolean isAvailable(@NotNull Project project, Editor editor, @Nullable final PsiElement psiElement) {
if (!super.isAvailable(project, editor, psiElement)) {
return false;
}

element = element == null ? null : CsvHelper.getParentFieldElement(element);
PsiElement element = psiElement == null ? null : CsvHelper.getParentFieldElement(psiElement);
return element instanceof CsvField &&
element.getFirstChild() != null &&
(CsvHelper.getElementType(element.getFirstChild()) != CsvTypes.QUOTE ||
Expand Down
Expand Up @@ -33,7 +33,8 @@ protected static void changeLeftAndRightColumnOrder(@NotNull Project project,
protected static String changeLeftAndRightColumnOrder(String text, String separator, CsvColumnInfo<PsiElement> leftColumnInfo, CsvColumnInfo<PsiElement> rightColumnInfo) {
List<PsiElement> rightElements = rightColumnInfo.getElements();
List<PsiElement> leftElements = leftColumnInfo.getElements();
int lastIndex = 0, maxRows = leftElements.size();
int lastIndex = 0;
int maxRows = leftElements.size();
StringBuilder newText = new StringBuilder();

for (int row = 0; row < maxRows; ++row) {
Expand Down
Expand Up @@ -17,13 +17,13 @@ public CsvShiftColumnLeftIntentionAction() {
}

@Override
public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement psiElement) throws IncorrectOperationException {
public void invoke(@NotNull Project project, Editor editor, @NotNull final PsiElement psiElement) throws IncorrectOperationException {
CsvFile csvFile = (CsvFile)psiElement.getContainingFile();

psiElement = CsvHelper.getParentFieldElement(psiElement);
PsiElement element = CsvHelper.getParentFieldElement(psiElement);

CsvColumnInfoMap<PsiElement> columnInfoMap = csvFile.getMyColumnInfoMap();
CsvColumnInfo<PsiElement> rightColumnInfo = columnInfoMap.getColumnInfo(psiElement);
CsvColumnInfo<PsiElement> rightColumnInfo = columnInfoMap.getColumnInfo(element);

// column must be at least index 1 to be shifted left
if (rightColumnInfo == null || rightColumnInfo.getColumnIndex() < 1) {
Expand Down
Expand Up @@ -21,10 +21,10 @@ public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement
throws IncorrectOperationException {
CsvFile csvFile = (CsvFile)psiElement.getContainingFile();

psiElement = CsvHelper.getParentFieldElement(psiElement);
PsiElement element = CsvHelper.getParentFieldElement(psiElement);

CsvColumnInfoMap<PsiElement> columnInfoMap = csvFile.getMyColumnInfoMap();
CsvColumnInfo<PsiElement> leftColumnInfo = columnInfoMap.getColumnInfo(psiElement);
CsvColumnInfo<PsiElement> leftColumnInfo = columnInfoMap.getColumnInfo(element);

// column must be at least index 1 to be shifted left
if (leftColumnInfo == null || leftColumnInfo.getColumnIndex() + 1 >= columnInfoMap.getColumnInfos().size()) {
Expand Down
Expand Up @@ -19,17 +19,17 @@ public CsvUnquoteValueIntentionAction() {
}

@Override
public boolean isAvailable(@NotNull Project project, Editor editor, @Nullable PsiElement element) {
if (!super.isAvailable(project, editor, element)) {
public boolean isAvailable(@NotNull Project project, Editor editor, @Nullable final PsiElement psiElement) {
if (!super.isAvailable(project, editor, psiElement)) {
return false;
}

element = element == null ? null : CsvHelper.getParentFieldElement(element);
PsiElement element = psiElement == null ? null : CsvHelper.getParentFieldElement(psiElement);
return element instanceof CsvField &&
element.getFirstChild() != null &&
(CsvHelper.getElementType(element.getFirstChild()) == CsvTypes.QUOTE ||
CsvHelper.getElementType(element.getLastChild()) == CsvTypes.QUOTE) &&
CsvIntentionHelper.getChildren(element).stream().allMatch(psiElement -> CsvHelper.getElementType(psiElement) != CsvTypes.ESCAPED_TEXT);
CsvIntentionHelper.getChildren(element).stream().allMatch(childElement -> CsvHelper.getElementType(childElement) != CsvTypes.ESCAPED_TEXT);
}

@Override
Expand Down

0 comments on commit df16f1a

Please sign in to comment.