Skip to content

Commit e182aed

Browse files
authored
Merge pull request #92 from hza/master
fix for default array value in generate all setters with default value
2 parents fcfc2fd + 384df2e commit e182aed

File tree

3 files changed

+61
-11
lines changed

3 files changed

+61
-11
lines changed

src/main/java/com/bruce/intellijplugin/generatesetter/Parameters.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ public class Parameters {
3131

3232
private PsiClass returnType;
3333

34+
private boolean isArray;
35+
36+
private int arrayDimensions;
37+
3438

3539
public PsiClass getReturnType() {
3640
return returnType;
@@ -63,4 +67,20 @@ public List<RealParam> getParams() {
6367
public void setParams(List<RealParam> params) {
6468
this.params = params;
6569
}
70+
71+
public boolean isArray() {
72+
return isArray;
73+
}
74+
75+
public void setIsArray(boolean isArray) {
76+
this.isArray = isArray;
77+
}
78+
79+
public void setArrayDimensions(int arrayDimensions) {
80+
this.arrayDimensions = arrayDimensions;
81+
}
82+
83+
public int getArrayDimensions() {
84+
return arrayDimensions;
85+
}
6686
}

src/main/java/com/bruce/intellijplugin/generatesetter/actions/GenerateAllSetterBase.java

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.intellij.openapi.editor.Editor;
3333
import com.intellij.openapi.project.Project;
3434
import com.intellij.openapi.util.TextRange;
35+
import com.intellij.openapi.util.text.StringUtil;
3536
import com.intellij.psi.PsiClass;
3637
import com.intellij.psi.PsiDeclarationStatement;
3738
import com.intellij.psi.PsiDocumentManager;
@@ -74,6 +75,13 @@ public GenerateAllSetterBase(GenerateAllHandler generateAllHandler) {
7475
this.generateAllHandler = generateAllHandler;
7576
}
7677

78+
private static final Set<String> javaSimpleTypes = new HashSet<>(Arrays.asList(
79+
"char",
80+
"boolean",
81+
"byte", "short", "int", "long",
82+
"float", "double"
83+
));
84+
7785
private static Map<String, String> typeGeneratedMap = new HashMap<String, String>() {
7886
{
7987
put("boolean", "false");
@@ -531,11 +539,20 @@ else if (psiClassOfParameter!=null && psiClassOfParameter.isEnum()) {
531539
Arrays.stream(allFields).findFirst().ifPresent(field -> builder.append(psiClassOfParameter.getName()).append(".").append(field.getName()));
532540
}
533541
else {
534-
builder.append("new "
535-
+ paramInfo.getParams().get(0).getRealName()
536-
+ "()");
542+
String realName = paramInfo.getParams().get(0).getRealName();
543+
builder.append("new " + realName);
544+
545+
if (paramInfo.isArray()) {
546+
for (int i = 0; i < paramInfo.getArrayDimensions(); i++) {
547+
builder.append("[0]");
548+
}
549+
} else {
550+
builder.append("()");
551+
}
552+
}
553+
if (!javaSimpleTypes.contains(realPackage)) {
554+
newImportList.add(realPackage);
537555
}
538-
newImportList.add(realPackage);
539556
}
540557
}
541558

@@ -550,15 +567,22 @@ else if (psiClassOfParameter!=null && psiClassOfParameter.isEnum()) {
550567
private static void appendCollectNotEmpty(StringBuilder builder,
551568
Parameters paramInfo, String defaultImpl,
552569
Set<String> newImportList) {
553-
builder.append("new " + defaultImpl + "<");
554-
for (int i = 0; i < paramInfo.getParams().size(); i++) {
555-
builder.append(paramInfo.getParams().get(i).getRealName());
556-
newImportList.add(paramInfo.getParams().get(i).getRealPackage());
557-
if (i != paramInfo.getParams().size() - 1) {
558-
builder.append(",");
570+
builder.append("new ").append(defaultImpl);
571+
if (paramInfo.isArray()) {
572+
for (int i = 0; i < paramInfo.getArrayDimensions(); i++) {
573+
builder.append("[0]");
574+
}
575+
} else {
576+
builder.append("<");
577+
for (int i = 0; i < paramInfo.getParams().size(); i++) {
578+
builder.append(paramInfo.getParams().get(i).getRealName());
579+
newImportList.add(paramInfo.getParams().get(i).getRealPackage());
580+
if (i != paramInfo.getParams().size() - 1) {
581+
builder.append(",");
582+
}
559583
}
584+
builder.append(">()");
560585
}
561-
builder.append(">()");
562586
}
563587

564588
private String findNextNotNull(PsiTypeElement psiType, String defaultName) {

src/main/java/com/bruce/intellijplugin/generatesetter/utils/PsiToolUtils.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@ public static boolean checkGuavaExist(Project project, @NotNull PsiElement eleme
5555
public static Parameters extractParamInfo(PsiType psiType) {
5656
String typeFullName = psiType.getCanonicalText();
5757
Parameters info = new Parameters();
58+
int arrayDimensions = psiType.getArrayDimensions();
59+
if (arrayDimensions > 0) {
60+
typeFullName = typeFullName.substring(0, typeFullName.indexOf('['));
61+
info.setIsArray(true);
62+
info.setArrayDimensions(arrayDimensions);
63+
}
5864
info.setReturnType(PsiTypesUtil.getPsiClass(psiType));
5965
int u = typeFullName.indexOf("<");
6066
if (u == -1) {

0 commit comments

Comments
 (0)