diff --git a/etc/ide/IntelliJ.equals-template.txt b/etc/ide/IntelliJ.equals-template.txt new file mode 100644 index 00000000..975d6fce --- /dev/null +++ b/etc/ide/IntelliJ.equals-template.txt @@ -0,0 +1,33 @@ +#parse("equalsHelper.vm") +public boolean equals(## +#if ($settings.generateFinalParameters) + final ## +#end +Object $paramName){ +#addEqualsPrologue() +#if ($fields.size() > 0) + + #addClassInstance() + + #foreach($field in $fields) + #if ($field.primitive) + #addPrimitiveFieldComparison($field) + #elseif ($field.enum) + #addPrimitiveFieldComparison($field) + #else + #addFieldComparison($field) + #end + #end +#end + + return true; +} +## +#macro(addPrimitiveFieldComparison $field) + if($field.accessor != ${classInstanceName}.$field.accessor) return false; +#end +## +#macro(addFieldComparison $field) + if(!ObjectUtils.nullSafeEquals($field.accessor, ${classInstanceName}.$field.accessor)) { return false; } +#end +## diff --git a/etc/ide/IntelliJ.hashCode-template.txt b/etc/ide/IntelliJ.hashCode-template.txt new file mode 100644 index 00000000..af2d4e7b --- /dev/null +++ b/etc/ide/IntelliJ.hashCode-template.txt @@ -0,0 +1,124 @@ +public int hashCode() { +#if (!$superHasHashCode && $fields.size() == 1) + #set($field = $fields.get(0)) + #if ($field.primitive) +#addTempForOneField($field) + return #addPrimitiveFieldHashCode($field); + #else + return #addFieldHashCode($field, false); + #end +#elseif ($fields.size() > 0) + #set($resultName = $helper.getUniqueLocalVarName("result", $fields, $settings)) + int $resultName ## + #set($resultAssigned = false) + #set($resultDeclarationCompleted = false) + #if ($superHasHashCode) + = #addSuperHashCode(); + #set($resultAssigned = true) + #set($resultDeclarationCompleted = true) + #end + #addTempDeclaration($resultDeclarationCompleted) + #set($tempName = "#addTempDeclaration($resultDeclarationCompleted)") + #foreach($field in $fields) + #addTempAssignment($field) + #if ($resultDeclarationCompleted) + $resultName ## + #end + = ## + #if ($resultAssigned) + 31 * $resultName + ## + #end + #if ($field.primitive) + #addPrimitiveFieldHashCode($field)## + #else + #addFieldHashCode($field, $resultAssigned)## + #end + ; + #set($resultAssigned = true) + #set($resultDeclarationCompleted = true) + #end + return $resultName; +#else + return 0; +#end +} +## +#macro (addPrimitiveFieldHashCode $field) + #set ($fName = $field.accessor) + #if ($field.byte || $field.short || $field.char) + (int) $fName## + #elseif ($field.long) + (int)($fName ^ ($fName >>> 32))## + #elseif ($field.boolean) + ($fName ? 1 : 0)## + #elseif ($field.float) + ($fName != +0.0f ? java.lang.Float.floatToIntBits($fName) : 0)## + #elseif ($field.double) + #set($tempName = "#getTempVarName()") + (int) ($tempName ^ ($tempName >>> 32))## + #elseif ($field.void) + 0## + #else + $fName## + #end +#end +## +#macro(getTempVarName) + $helper.getUniqueLocalVarName("temp", $fields, $settings)## +#end +## +#macro(addTempForOneField $field) + #if ($field.double) + #if ($settings.generateFinalLocals) + final ## + #end + #set($tempName = "#getTempVarName()") + long $tempName = java.lang.Double.doubleToLongBits($field.accessor); + #end +#end +## +#macro(adjustHashCodeToArrays $field) + #if ($field.array && $java_version > 4) + #if ($field.nestedArray) + java.util.Arrays.deepHashCode($field.accessor)## + #else + java.util.Arrays.hashCode($field.accessor)## + #end + #else + ${field.accessor}.hashCode()## + #end +#end +## +#macro(addSuperHashCode) + #if ($superHasHashCode) + super.hashCode()## + #else + 0## + #end +#end +## +#macro(addTempDeclaration $resultDeclarationCompleted) + #foreach($field in $fields) + #if ($field.double) + #if (!$resultDeclarationCompleted) + ; + #end + #set($tempName = "#getTempVarName()") + long $tempName; + #set($resultDeclarationCompleted = true) + #break + #end + #end +#end +## +#macro(addTempAssignment $field) + #if ($field.double) + #set($tempName = "#getTempVarName()") + $tempName = java.lang.Double.doubleToLongBits($field.accessor); + #end +#end +## +#macro(addFieldHashCode $field $brace) +#set($name = $field.accessor) +ObjectUtils.nullSafeHashCode($name)## +#end