Detect Outlier using Boxplot in Java

import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
public boolean isOutlier(String itemId, String value) {

    if (monitoringItem.getProperties().getBoxPlotSize() > 0) {
        BoxPlot boxPlot = Statics.boxPlotRepository.findByItemId(itemId);

        DescriptiveStatistics descriptiveStatistics = new DescriptiveStatistics();
        double dValue = Double.parseDouble(value);

        for (ItemBoxPlot bItem : boxPlot.getBoxPlotList()) {
            double d = Double.parseDouble(bItem.getValue());

            descriptiveStatistics.addValue(d);
        }

        double Q1 = descriptiveStatistics.getPercentile(25);
        double Q3 = descriptiveStatistics.getPercentile(75);
        double IQR = Q3 - Q1;

        double highRange = Q3 + 3 * IQR;
        double lowRange = Q1 - 3 * IQR;

        if (dValue > highRange || dValue < lowRange) {
            return true;
        }
    }

    return false;
}

References
https://pupli.net/2019/05/31/detect-outlier-using-boxplot/

Declare a variable in Gradle usable in Java using buildConfigField and resValue

Generate Java Constants

android {
    buildTypes {
        debug {
            buildConfigField "int", "FOO", "42"
            buildConfigField "String", "FOO_STRING", "\"foo\""
            buildConfigField "boolean", "LOG", "true"
        }

        release {
            buildConfigField "int", "FOO", "52"
            buildConfigField "String", "FOO_STRING", "\"bar\""
            buildConfigField "boolean", "LOG", "false"
        }
    }
}

You can access them with BuildConfig.FOO

Generate Android resources

android {
    buildTypes {
        debug{
            resValue "string", "app_name", "My App Name Debug"
        }
        release {
            resValue "string", "app_name", "My App Name"
        }
    }
}

You can access them in the usual way with @string/app_name or R.string.app_name

String type build config fields should be declared like this:

buildConfigField "String", "SERVER_URL", "\"http://dev.myserver.com\""

References
https://stackoverflow.com/questions/17197636/is-it-possible-to-declare-a-variable-in-gradle-usable-in-java
https://stackoverflow.com/questions/30796533/how-to-generate-buildconfigfield-with-string-type

Spring Boot: Configuring a Main Class

Spring Boot 1.x

jar {
    baseName = 'interface'
    version = '0.0.1-SNAPSHOT'
    manifest {
        attributes 'Main-Class': 'net.pupli.sobhan.SobhanApplication'
    }
}

Spring Boot 2.x

springBoot {
    mainClassName = 'org.baeldung.DemoApplication'
}

or

bootJar {
    mainClassName = 'org.baeldung.DemoApplication'
}
bootJar {
    manifest {
    attributes 'Start-Class': 'org.baeldung.DemoApplication'
    }
}

References

https://www.baeldung.com/spring-boot-main-class

Padding Strings with format method on Java

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String s1 = sc.next();
    int x = sc.nextInt();

    PadLeft(s1);
    System.out.printf("%03d", x);
    System.out.println();

    PadRight(s1);
    System.out.printf("%03d", x);
}

private static void PadRight(String s)
{
    System.out.printf("%1$15s", s);
}

private static void PadLeft(String s)
{
    System.out.printf("%1$-15s", s);
}

15 represents the minimal width of the String

Input

Hello
12

Output

Hello          012
          Hello012

References
https://stackoverflow.com/questions/13475388/generate-fixed-length-strings-filled-with-whitespaces
http://www.rgagnon.com/javadetails/java-0448.html