Skip to content

Commit

Permalink
Merge pull request #1 from wavemaker/dev-udaya/11.9
Browse files Browse the repository at this point in the history
Upgraded connector code to support java 17 and compatible with wavema…
  • Loading branch information
udaysa authored Oct 21, 2024
2 parents 5723d40 + d6a600c commit 0846766
Show file tree
Hide file tree
Showing 8 changed files with 193 additions and 39 deletions.
2 changes: 1 addition & 1 deletion excel-connector-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<parent>
<groupId>com.wavemaker.connector</groupId>
<artifactId>excel-connector</artifactId>
<version>1.0</version>
<version>2.0</version>
</parent>

<artifactId>excel-connector-api</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version: "1.0"
version: "2.0"
name: "excel-connector"
description: "A simple connector excel-connector that can be used in WaveMaker application"
springConfigurationClass: "com.wavemaker.connector.excel.ExcelConnectorConfiguration"
21 changes: 10 additions & 11 deletions excel-connector-impl/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<parent>
<groupId>com.wavemaker.connector</groupId>
<artifactId>excel-connector</artifactId>
<version>1.0</version>
<version>2.0</version>
</parent>

<artifactId>excel-connector-impl</artifactId>
Expand All @@ -33,29 +33,28 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<exclusions>
<exclusion>
<groupId>com.github.virtuald</groupId>
<artifactId>curvesapi</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>com.wavemaker.commons</groupId>
<artifactId>wavemaker-commons-util</artifactId>
<version>10.5.5</version>
<version>${wavemaker-version}</version>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.wavemaker.commons.util.NamingUtils;
import com.wavemaker.connector.excel.utils.NamingUtils;

@Service
@Primary
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.wavemaker.connector.excel.utils;

import com.wavemaker.commons.util.StringUtils;
import org.apache.commons.lang3.tuple.Pair;

import java.beans.Introspector;

public class NamingUtils {

/**
* Converts a database name (table or column) to a java name.
* eg,Hello_World : helloWorld
* eq,HelloWorld : helloWorld
*
* @return The converted java identifier.
*/
public static String toJavaIdentifier(final String identifier) {
String rtn = columnToPropertyName(identifier);
int upperIndex = 1;
if (rtn.length() > 1 && Character.isUpperCase(rtn.charAt(1))) {
upperIndex = 2;
}
rtn = rtn.substring(0, upperIndex).toLowerCase() + rtn.substring(upperIndex);
return StringUtils.toJavaIdentifier(rtn);
}

private static String columnToPropertyName(String identifier) {
String decapitalize = Introspector.decapitalize(ReverseEngineeringStrategyUtil.toUpperCamelCase(identifier));
return keywordCheck(decapitalize);
}

private static String keywordCheck(String possibleKeyword) {
if (ReverseEngineeringStrategyUtil.isReservedJavaKeyword(possibleKeyword)) {
possibleKeyword = possibleKeyword + "_";
}
return possibleKeyword;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
package com.wavemaker.connector.excel.utils;

import java.util.HashSet;
import java.util.Set;

public class ReverseEngineeringStrategyUtil {

private static Set<String> RESERVED_KEYWORDS;

static {
RESERVED_KEYWORDS = new HashSet<>();

RESERVED_KEYWORDS.add("abstract");
RESERVED_KEYWORDS.add("continue");
RESERVED_KEYWORDS.add("for");
RESERVED_KEYWORDS.add("new");
RESERVED_KEYWORDS.add("switch");
RESERVED_KEYWORDS.add("assert");
RESERVED_KEYWORDS.add("default");
RESERVED_KEYWORDS.add("goto");
RESERVED_KEYWORDS.add("package");
RESERVED_KEYWORDS.add("synchronized");
RESERVED_KEYWORDS.add("boolean");
RESERVED_KEYWORDS.add("do");
RESERVED_KEYWORDS.add("if");
RESERVED_KEYWORDS.add("private");
RESERVED_KEYWORDS.add("this");
RESERVED_KEYWORDS.add("break");
RESERVED_KEYWORDS.add("double");
RESERVED_KEYWORDS.add("implements");
RESERVED_KEYWORDS.add("protected");
RESERVED_KEYWORDS.add("throw");
RESERVED_KEYWORDS.add("byte");
RESERVED_KEYWORDS.add("else");
RESERVED_KEYWORDS.add("import");
RESERVED_KEYWORDS.add("public");
RESERVED_KEYWORDS.add("throws");
RESERVED_KEYWORDS.add("case");
RESERVED_KEYWORDS.add("enum");
RESERVED_KEYWORDS.add("instanceof");
RESERVED_KEYWORDS.add("return");
RESERVED_KEYWORDS.add("transient");
RESERVED_KEYWORDS.add("catch");
RESERVED_KEYWORDS.add("extends");
RESERVED_KEYWORDS.add("int");
RESERVED_KEYWORDS.add("short");
RESERVED_KEYWORDS.add("try");
RESERVED_KEYWORDS.add("char");
RESERVED_KEYWORDS.add("final");
RESERVED_KEYWORDS.add("interface");
RESERVED_KEYWORDS.add("static");
RESERVED_KEYWORDS.add("void");
RESERVED_KEYWORDS.add("class");
RESERVED_KEYWORDS.add("finally");
RESERVED_KEYWORDS.add("long");
RESERVED_KEYWORDS.add("strictfp");
RESERVED_KEYWORDS.add("volatile");
RESERVED_KEYWORDS.add("const");
RESERVED_KEYWORDS.add("float");
RESERVED_KEYWORDS.add("native");
RESERVED_KEYWORDS.add("super");
RESERVED_KEYWORDS.add("while");
}

private ReverseEngineeringStrategyUtil() {

}

/**
* Converts a database name (table or column) to a java name (first letter capitalised).
* employee_name -> EmployeeName.
*
* Derived from middlegen's dbnameconverter.
*
* @param s The database name to convert.
*
* @return The converted database name.
*/
public static String toUpperCamelCase(String s) {
if ("".equals(s)) {
return s;
}
StringBuffer result = new StringBuffer();

boolean capitalize = true;
boolean lastCapital = false;
boolean lastDecapitalized = false;
String p = null;
for (int i = 0; i < s.length(); i++) {
String c = s.substring(i, i + 1);
if ("_".equals(c) || " ".equals(c) || "-".equals(c)) {
capitalize = true;
continue;
}

if (c.toUpperCase().equals(c)) {
if (lastDecapitalized && !lastCapital) {
capitalize = true;
}
lastCapital = true;
} else {
lastCapital = false;
}

//if(forceFirstLetter && result.length()==0) capitalize = false;

if (capitalize) {
if (p == null || !p.equals("_")) {
result.append(c.toUpperCase());
capitalize = false;
p = c;
} else {
result.append(c.toLowerCase());
capitalize = false;
p = c;
}
} else {
result.append(c.toLowerCase());
lastDecapitalized = true;
p = c;
}

}
String r = result.toString();
return r;
}

static public boolean isReservedJavaKeyword(String str) {
return RESERVED_KEYWORDS.contains(str);
}
}
11 changes: 2 additions & 9 deletions excel-connector-packaging/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,20 @@
<parent>
<groupId>com.wavemaker.connector</groupId>
<artifactId>excel-connector</artifactId>
<version>1.0</version>
<version>2.0</version>
</parent>

<artifactId>excel-connector-packaging</artifactId>

<packaging>jar</packaging>
<name>excel-connector-packaging</name>


<dependencies>
<dependency>
<artifactId>wavemaker-connector-build-maven-plugin</artifactId>
<groupId>com.wavemaker.connector.build</groupId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>com.wavemaker.connector.build</groupId>
<artifactId>wavemaker-connector-build-maven-plugin</artifactId>
<version>${wavemaker-version}</version>
<configuration>
<connectorId>excel-connector</connectorId>
</configuration>
Expand Down
25 changes: 9 additions & 16 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.wavemaker.connector</groupId>
<artifactId>excel-connector</artifactId>
<version>1.0</version>
<version>2.0</version>

<modules>
<module>excel-connector-api</module>
Expand All @@ -18,15 +18,17 @@
<name>excel-connector</name>

<properties>
<wavemaker-version>10.5.4</wavemaker-version>
<wavemaker-version>11.9.0</wavemaker-version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>


<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.wavemaker.runtime</groupId>
<artifactId>wavemaker-app-runtime-services</artifactId>
<groupId>com.wavemaker.app</groupId>
<artifactId>wavemaker-app-dependencies</artifactId>
<version>${wavemaker-version}</version>
<scope>import</scope>
<type>pom</type>
Expand All @@ -41,11 +43,6 @@
<artifactId>wavemaker-app-runtime-connector-impl</artifactId>
<version>${wavemaker-version}</version>
</dependency>
<dependency>
<groupId>com.wavemaker.connector.build</groupId>
<artifactId>wavemaker-connector-build-maven-plugin</artifactId>
<version>${wavemaker-version}</version>
</dependency>
<dependency>
<groupId>com.wavemaker.connector</groupId>
<artifactId>excel-connector-api</artifactId>
Expand All @@ -54,9 +51,9 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<version>4.13.1</version>
<scope>test</scope>
</dependency>

</dependencies>
</dependencyManagement>

Expand All @@ -65,11 +62,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
<version>3.13.0</version>
</plugin>
</plugins>
</build>
Expand Down

0 comments on commit 0846766

Please sign in to comment.