Skip to content

Commit 76c9e32

Browse files
author
Sommer
committed
[FIX] additional NULL checks & API corrections
Fixes #128
1 parent 91851ed commit 76c9e32

15 files changed

+45
-26
lines changed

src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvStorageHelper.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.intellij.openapi.util.Key;
55
import com.intellij.openapi.vfs.VirtualFile;
66
import com.intellij.util.PathUtil;
7-
import org.jetbrains.annotations.NotNull;
87

98
import java.util.regex.Pattern;
109

@@ -13,7 +12,10 @@ public final class CsvStorageHelper {
1312

1413
public static final Key<String> RELATIVE_FILE_URL = Key.create("CSV_PLUGIN_RELATIVE_URL");
1514

16-
public static String getRelativeFileUrl(@NotNull Project project, @NotNull VirtualFile virtualFile) {
15+
public static String getRelativeFileUrl(Project project, VirtualFile virtualFile) {
16+
if (project == null || virtualFile == null) {
17+
return null;
18+
}
1719
String url = virtualFile.getUserData(RELATIVE_FILE_URL);
1820
if (url == null) {
1921
String projectDir = PathUtil.getLocalPath(project.getBasePath());

src/main/java/net/seesharpsoft/intellij/plugins/csv/actions/CsvChangeSeparatorAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public boolean isSelected(@NotNull AnActionEvent anActionEvent) {
2828
return false;
2929
}
3030
CsvFileAttributes csvFileAttributes = ServiceManager.getService(psiFile.getProject(), CsvFileAttributes.class);
31-
return csvFileAttributes.getFileSeparator(psiFile) != null && CsvCodeStyleSettings.getCurrentSeparator(psiFile).equals(mySeparator);
31+
return csvFileAttributes.getFileSeparator(psiFile) != null && CsvCodeStyleSettings.getCurrentSeparator(anActionEvent.getProject(), psiFile).equals(mySeparator);
3232
}
3333

3434
@Override

src/main/java/net/seesharpsoft/intellij/plugins/csv/actions/CsvChangeSeparatorActionGroup.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public void update(AnActionEvent anActionEvent) {
3434

3535
if (psiFile != null) {
3636
anActionEvent.getPresentation()
37-
.setText(String.format("CSV Value Separator: %s", CsvCodeStyleSettings.getSeparatorDisplayText(CsvCodeStyleSettings.getCurrentSeparator(psiFile))));
37+
.setText(String.format("CSV Value Separator: %s", CsvCodeStyleSettings.getSeparatorDisplayText(CsvCodeStyleSettings.getCurrentSeparator(anActionEvent.getProject(), psiFile))));
3838
}
3939
}
4040

src/main/java/net/seesharpsoft/intellij/plugins/csv/components/CsvFileAttributes.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,22 +47,32 @@ protected String generateMapKey(@NotNull Project project, @NotNull VirtualFile v
4747
}
4848

4949
public void setFileSeparator(@NotNull PsiFile psiFile, @NotNull String separator) {
50-
Attribute state = attributeMap.get(generateMapKey(psiFile));
50+
String key = generateMapKey(psiFile);
51+
if (key == null) {
52+
return;
53+
}
54+
Attribute state = attributeMap.get(key);
5155
if (state == null) {
5256
state = new Attribute();
53-
attributeMap.put(generateMapKey(psiFile), state);
57+
attributeMap.put(key, state);
5458
}
5559
state.separator = separator;
5660
}
5761

5862
public void removeFileSeparator(@NotNull PsiFile psiFile) {
59-
attributeMap.remove(generateMapKey(psiFile));
63+
String key = generateMapKey(psiFile);
64+
if (key != null) {
65+
attributeMap.remove(key);
66+
}
6067
}
6168

6269
public String getFileSeparator(@NotNull Project project, @NotNull VirtualFile virtualFile) {
63-
Attribute state = attributeMap.get(generateMapKey(project, virtualFile));
64-
if (state != null) {
65-
return state.separator;
70+
String key = generateMapKey(project, virtualFile);
71+
if (key != null) {
72+
Attribute state = attributeMap.get(key);
73+
if (state != null) {
74+
return state.separator;
75+
}
6676
}
6777
return null;
6878
}

src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/CsvAnnotator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public void annotate(@NotNull final PsiElement element, @NotNull final Annotatio
3939
return;
4040
}
4141

42-
CsvColumnInfo<PsiElement> columnInfo = csvFile.getMyColumnInfoMap().getColumnInfo(element);
42+
CsvColumnInfo<PsiElement> columnInfo = csvFile.getColumnInfoMap().getColumnInfo(element);
4343

4444
if (columnInfo != null) {
4545
PsiElement headerElement = columnInfo.getHeaderElement();

src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/CsvTableEditor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public boolean isEditable() {
101101

102102
public CsvColumnInfoMap<PsiElement> getColumnInfoMap() {
103103
CsvFile csvFile = getCsvFile();
104-
return csvFile == null ? null : csvFile.getMyColumnInfoMap();
104+
return csvFile == null ? null : csvFile.getColumnInfoMap();
105105
}
106106

107107
public boolean hasErrors() {
@@ -289,7 +289,7 @@ public CsvFile getCsvFile() {
289289
this.document = FileDocumentManager.getInstance().getDocument(this.file);
290290
PsiDocumentManager documentManager = PsiDocumentManager.getInstance(project);
291291
this.psiFile = documentManager.getPsiFile(this.document);
292-
this.currentSeparator = CsvCodeStyleSettings.getCurrentSeparator(this.psiFile);
292+
this.currentSeparator = CsvCodeStyleSettings.getCurrentSeparator(this.getProject(), this.getFile());
293293
}
294294
return this.psiFile instanceof CsvFile ? (CsvFile) psiFile : null;
295295
}

src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorSwing.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ protected void updateUIComponents() {
338338
return;
339339
}
340340

341-
CsvColumnInfoMap<PsiElement> columnInfoMap = csvFile.getMyColumnInfoMap();
341+
CsvColumnInfoMap<PsiElement> columnInfoMap = csvFile.getColumnInfoMap();
342342
if (Objects.equals(lastColumnInfoMap, columnInfoMap)) {
343343
return;
344344
}

src/main/java/net/seesharpsoft/intellij/plugins/csv/highlighter/CsvHighlightUsagesHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ protected void selectTargets(List<PsiElement> list, Consumer<List<PsiElement>> c
5252

5353
@Override
5454
public void computeUsages(List<PsiElement> list) {
55-
CsvColumnInfoMap<PsiElement> columnInfoMap = getCsvFile().getMyColumnInfoMap();
55+
CsvColumnInfoMap<PsiElement> columnInfoMap = getCsvFile().getColumnInfoMap();
5656
for (PsiElement listElement : list) {
57-
CsvColumnInfo<PsiElement> csvColumnInfo = getCsvFile().getMyColumnInfoMap().getColumnInfo(listElement);
57+
CsvColumnInfo<PsiElement> csvColumnInfo = getCsvFile().getColumnInfoMap().getColumnInfo(listElement);
5858
if (csvColumnInfo == null) {
5959
continue;
6060
}

src/main/java/net/seesharpsoft/intellij/plugins/csv/inspection/CsvValidationInspection.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descri
148148
try {
149149
PsiElement element = descriptor.getPsiElement();
150150
Document document = PsiDocumentManager.getInstance(project).getDocument(element.getContainingFile());
151-
String separator = CsvCodeStyleSettings.getCurrentSeparator(element.getContainingFile());
151+
String separator = CsvCodeStyleSettings.getCurrentSeparator(project, element.getContainingFile());
152152
String text = document.getText();
153153
document.setText(text.substring(0, element.getTextOffset()) + separator + text.substring(element.getTextOffset()));
154154
} catch (IncorrectOperationException e) {

src/main/java/net/seesharpsoft/intellij/plugins/csv/intention/CsvShiftColumnIntentionAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ protected static void changeLeftAndRightColumnOrder(@NotNull Project project,
2525
CsvColumnInfo<PsiElement> rightColumnInfo) {
2626
Document document = PsiDocumentManager.getInstance(project).getDocument(csvFile);
2727
document.setText(
28-
changeLeftAndRightColumnOrder(document.getText(), CsvCodeStyleSettings.getCurrentSeparator(csvFile), leftColumnInfo, rightColumnInfo)
28+
changeLeftAndRightColumnOrder(document.getText(), CsvCodeStyleSettings.getCurrentSeparator(project, csvFile), leftColumnInfo, rightColumnInfo)
2929
);
3030
}
3131

0 commit comments

Comments
 (0)