JAVA-2116: Split or move libraries-data-2 module (#9716)
* JAVA-2116: Move Java-R Integration to libraries-6 module * JAVA-2116: Move Guide to JMapper to libraries-data module
This commit is contained in:
@@ -8,10 +8,8 @@ This module contains articles about libraries for data processing in Java.
|
||||
- [Introduction to Conflict-Free Replicated Data Types](https://www.baeldung.com/java-conflict-free-replicated-data-types)
|
||||
- [Introduction to javax.measure](https://www.baeldung.com/javax-measure)
|
||||
- [A Guide to Infinispan in Java](https://www.baeldung.com/infinispan)
|
||||
- [Guide to JMapper](https://www.baeldung.com/jmapper)
|
||||
- [An Introduction to SuanShu](https://www.baeldung.com/suanshu)
|
||||
- [Intro to Derive4J](https://www.baeldung.com/derive4j)
|
||||
- [Java-R Integration](https://www.baeldung.com/java-r-integration)
|
||||
- [Univocity Parsers](https://www.baeldung.com/java-univocity-parsers)
|
||||
- [Using Kafka MockConsumer](https://www.baeldung.com/kafka-mockconsumer)
|
||||
- [Using Kafka MockProducer](https://www.baeldung.com/kafka-mockproducer)
|
||||
|
||||
@@ -86,11 +86,6 @@
|
||||
<artifactId>spring-web</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.googlecode.jmapper-framework</groupId>
|
||||
<artifactId>jmapper-core</artifactId>
|
||||
<version>${jmapper.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.numericalmethod</groupId>
|
||||
<artifactId>suanshu</artifactId>
|
||||
@@ -126,6 +121,11 @@
|
||||
<artifactId>kafka-clients</artifactId>
|
||||
<version>${kafka.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<version>${guava.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.awaitility</groupId>
|
||||
<artifactId>awaitility</artifactId>
|
||||
@@ -138,21 +138,6 @@
|
||||
<version>${awaitility.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.rosuda.REngine</groupId>
|
||||
<artifactId>Rserve</artifactId>
|
||||
<version>${rserve.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.jbytecode</groupId>
|
||||
<artifactId>RCaller</artifactId>
|
||||
<version>${rcaller.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.renjin</groupId>
|
||||
<artifactId>renjin-script-engine</artifactId>
|
||||
<version>${renjin.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.bytebuddy</groupId>
|
||||
<artifactId>byte-buddy</artifactId>
|
||||
@@ -175,33 +160,8 @@
|
||||
<url>http://repo.numericalmethod.com/maven/</url>
|
||||
<layout>default</layout>
|
||||
</repository>
|
||||
|
||||
<!-- Needed for Renjin -->
|
||||
<repository>
|
||||
<id>bedatadriven</id>
|
||||
<name>bedatadriven public repo</name>
|
||||
<url>https://nexus.bedatadriven.com/content/groups/public/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<!-- Excludes FastR classes from compilations since they require GraalVM -->
|
||||
<excludes>
|
||||
<exclude>com/baeldung/r/FastRMean.java</exclude>
|
||||
</excludes>
|
||||
<testExcludes>
|
||||
<exclude>com/baeldung/r/FastRMeanUnitTest.java</exclude>
|
||||
</testExcludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<properties>
|
||||
<flink.version>1.5.0</flink.version>
|
||||
<hll.version>1.6.0</hll.version>
|
||||
@@ -210,17 +170,14 @@
|
||||
<infinispan.version>9.1.5.Final</infinispan.version>
|
||||
<jackson.version>2.9.8</jackson.version>
|
||||
<spring.version>4.3.8.RELEASE</spring.version>
|
||||
<jmapper.version>1.6.0.1</jmapper.version>
|
||||
<suanshu.version>4.0.0</suanshu.version>
|
||||
<derive4j.version>1.1.0</derive4j.version>
|
||||
<assertj.version>3.6.2</assertj.version>
|
||||
<slf4j.version>1.7.25</slf4j.version>
|
||||
<awaitility.version>3.0.0</awaitility.version>
|
||||
<univocity.version>2.8.4</univocity.version>
|
||||
<renjin.version>RELEASE</renjin.version>
|
||||
<rcaller.version>3.0</rcaller.version>
|
||||
<rserve.version>1.8.1</rserve.version>
|
||||
<kafka.version>2.5.0</kafka.version>
|
||||
<guava.version>29.0-jre</guava.version>
|
||||
</properties>
|
||||
|
||||
</project>
|
||||
@@ -1,56 +0,0 @@
|
||||
package com.baeldung.jmapper;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
|
||||
public class User {
|
||||
|
||||
private long id;
|
||||
private String email;
|
||||
private LocalDate birthDate;
|
||||
|
||||
// constructors
|
||||
|
||||
public User() {
|
||||
super();
|
||||
}
|
||||
|
||||
public User(long id, String email, LocalDate birthDate) {
|
||||
super();
|
||||
this.id = id;
|
||||
this.email = email;
|
||||
this.birthDate = birthDate;
|
||||
}
|
||||
|
||||
// getters and setters
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public LocalDate getBirthDate() {
|
||||
return birthDate;
|
||||
}
|
||||
|
||||
public void setBirthDate(LocalDate birthDate) {
|
||||
this.birthDate = birthDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "User [id=" + id + ", email=" + email + ", birthDate=" + birthDate + "]";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
package com.baeldung.jmapper;
|
||||
|
||||
import com.googlecode.jmapper.annotations.JMap;
|
||||
import com.googlecode.jmapper.annotations.JMapConversion;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.Period;
|
||||
|
||||
public class UserDto {
|
||||
|
||||
@JMap
|
||||
private long id;
|
||||
|
||||
@JMap("email")
|
||||
private String username;
|
||||
|
||||
@JMap("birthDate")
|
||||
private int age;
|
||||
|
||||
@JMapConversion(from={"birthDate"}, to={"age"})
|
||||
public int conversion(LocalDate birthDate){
|
||||
return Period.between(birthDate, LocalDate.now()).getYears();
|
||||
}
|
||||
|
||||
// constructors
|
||||
|
||||
public UserDto() {
|
||||
super();
|
||||
}
|
||||
|
||||
public UserDto(long id, String username, int age) {
|
||||
super();
|
||||
this.id = id;
|
||||
this.username = username;
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
// getters and setters
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public int getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
public void setAge(int age) {
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "UserDto [id=" + id + ", username=" + username + ", age=" + age + "]";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
package com.baeldung.jmapper;
|
||||
|
||||
import com.googlecode.jmapper.annotations.JGlobalMap;
|
||||
|
||||
@JGlobalMap
|
||||
public class UserDto1 {
|
||||
|
||||
private long id;
|
||||
private String email;
|
||||
|
||||
|
||||
// constructors
|
||||
|
||||
public UserDto1() {
|
||||
super();
|
||||
}
|
||||
|
||||
public UserDto1(long id, String email) {
|
||||
super();
|
||||
this.id = id;
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
// getters and setters
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "UserDto [id=" + id + ", email=" + email + "]";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
package com.baeldung.jmapper.relational;
|
||||
|
||||
import com.googlecode.jmapper.annotations.JMap;
|
||||
|
||||
|
||||
public class User {
|
||||
|
||||
@JMap(classes = {UserDto1.class, UserDto2.class})
|
||||
private long id;
|
||||
|
||||
@JMap(attributes = {"username", "email"}, classes = {UserDto1.class, UserDto2.class})
|
||||
private String email;
|
||||
|
||||
// constructors
|
||||
|
||||
public User() {
|
||||
super();
|
||||
}
|
||||
|
||||
public User(long id, String email) {
|
||||
super();
|
||||
this.id = id;
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
// getters and setters
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "User [id=" + id + ", email=" + email + "]";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
package com.baeldung.jmapper.relational;
|
||||
|
||||
|
||||
public class UserDto1 {
|
||||
|
||||
private long id;
|
||||
private String username;
|
||||
|
||||
// constructors
|
||||
|
||||
public UserDto1() {
|
||||
super();
|
||||
}
|
||||
|
||||
public UserDto1(long id, String username) {
|
||||
super();
|
||||
this.id = id;
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
// getters and setters
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "UserDto [id=" + id + ", username=" + username + "]";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
package com.baeldung.jmapper.relational;
|
||||
|
||||
|
||||
public class UserDto2 {
|
||||
|
||||
private long id;
|
||||
private String email;
|
||||
|
||||
// constructors
|
||||
|
||||
public UserDto2() {
|
||||
super();
|
||||
}
|
||||
|
||||
public UserDto2(long id, String email) {
|
||||
super();
|
||||
this.id = id;
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
// getters and setters
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "UserDto2 [id=" + id + ", email=" + email + "]";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
package com.baeldung.r;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
/**
|
||||
* FastR showcase.
|
||||
*
|
||||
* @author Donato Rimenti
|
||||
*/
|
||||
public class FastRMean {
|
||||
|
||||
/**
|
||||
* Invokes the customMean R function passing the given values as arguments.
|
||||
*
|
||||
* @param values the input to the mean script
|
||||
* @return the result of the R script
|
||||
*/
|
||||
public double mean(int[] values) {
|
||||
Context polyglot = Context.newBuilder()
|
||||
.allowAllAccess(true)
|
||||
.build();
|
||||
String meanScriptContent = RUtils.getMeanScriptContent();
|
||||
polyglot.eval("R", meanScriptContent);
|
||||
Value rBindings = polyglot.getBindings("R");
|
||||
Value rInput = rBindings.getMember("c")
|
||||
.execute(values);
|
||||
return rBindings.getMember("customMean")
|
||||
.execute(rInput)
|
||||
.asDouble();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package com.baeldung.r;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import com.github.rcaller.rstuff.RCaller;
|
||||
import com.github.rcaller.rstuff.RCallerOptions;
|
||||
import com.github.rcaller.rstuff.RCode;
|
||||
|
||||
/**
|
||||
* RCaller showcase.
|
||||
*
|
||||
* @author Donato Rimenti
|
||||
*/
|
||||
public class RCallerMean {
|
||||
|
||||
/**
|
||||
* Invokes the customMean R function passing the given values as arguments.
|
||||
*
|
||||
* @param values the input to the mean script
|
||||
* @return the result of the R script
|
||||
* @throws IOException if any error occurs
|
||||
* @throws URISyntaxException if any error occurs
|
||||
*/
|
||||
public double mean(int[] values) throws IOException, URISyntaxException {
|
||||
String fileContent = RUtils.getMeanScriptContent();
|
||||
RCode code = RCode.create();
|
||||
code.addRCode(fileContent);
|
||||
code.addIntArray("input", values);
|
||||
code.addRCode("result <- customMean(input)");
|
||||
RCaller caller = RCaller.create(code, RCallerOptions.create());
|
||||
caller.runAndReturnResult("result");
|
||||
return caller.getParser()
|
||||
.getAsDoubleArray("result")[0];
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
package com.baeldung.r;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Utility class for loading the script.R content.
|
||||
*
|
||||
* @author Donato Rimenti
|
||||
*/
|
||||
public class RUtils {
|
||||
|
||||
/**
|
||||
* Loads the script.R and returns its content as a string.
|
||||
*
|
||||
* @return the script.R content as a string
|
||||
* @throws IOException if any error occurs
|
||||
* @throws URISyntaxException if any error occurs
|
||||
*/
|
||||
static String getMeanScriptContent() throws IOException, URISyntaxException {
|
||||
URI rScriptUri = RUtils.class.getClassLoader()
|
||||
.getResource("script.R")
|
||||
.toURI();
|
||||
Path inputScript = Paths.get(rScriptUri);
|
||||
return Files.lines(inputScript)
|
||||
.collect(Collectors.joining());
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
package com.baeldung.r;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import javax.script.ScriptException;
|
||||
|
||||
import org.renjin.script.RenjinScriptEngine;
|
||||
import org.renjin.sexp.DoubleArrayVector;
|
||||
|
||||
/**
|
||||
* Renjin showcase.
|
||||
*
|
||||
* @author Donato Rimenti
|
||||
*/
|
||||
public class RenjinMean {
|
||||
|
||||
/**
|
||||
* Invokes the customMean R function passing the given values as arguments.
|
||||
*
|
||||
* @param values the input to the mean script
|
||||
* @return the result of the R script
|
||||
* @throws IOException if any error occurs
|
||||
* @throws URISyntaxException if any error occurs
|
||||
* @throws ScriptException if any error occurs
|
||||
*/
|
||||
public double mean(int[] values) throws IOException, URISyntaxException, ScriptException {
|
||||
RenjinScriptEngine engine = new RenjinScriptEngine();
|
||||
String meanScriptContent = RUtils.getMeanScriptContent();
|
||||
engine.put("input", values);
|
||||
engine.eval(meanScriptContent);
|
||||
DoubleArrayVector result = (DoubleArrayVector) engine.eval("customMean(input)");
|
||||
return result.asReal();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
package com.baeldung.r;
|
||||
|
||||
import org.rosuda.REngine.REXPMismatchException;
|
||||
import org.rosuda.REngine.REngineException;
|
||||
import org.rosuda.REngine.Rserve.RConnection;
|
||||
|
||||
/**
|
||||
* Rserve showcase.
|
||||
*
|
||||
* @author Donato Rimenti
|
||||
*/
|
||||
public class RserveMean {
|
||||
|
||||
/**
|
||||
* Connects to the Rserve istance listening on 127.0.0.1:6311 and invokes the
|
||||
* customMean R function passing the given values as arguments.
|
||||
*
|
||||
* @param values the input to the mean script
|
||||
* @return the result of the R script
|
||||
* @throws REngineException if any error occurs
|
||||
* @throws REXPMismatchException if any error occurs
|
||||
*/
|
||||
public double mean(int[] values) throws REngineException, REXPMismatchException {
|
||||
RConnection c = new RConnection();
|
||||
c.assign("input", values);
|
||||
return c.eval("customMean(input)")
|
||||
.asDouble();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
package com.baeldung.jmapper;
|
||||
|
||||
import com.googlecode.jmapper.JMapper;
|
||||
import com.googlecode.jmapper.api.JMapperAPI;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
import static com.googlecode.jmapper.api.JMapperAPI.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class JMapperIntegrationTest {
|
||||
|
||||
@Test
|
||||
public void givenUser_whenUseAnnotation_thenConverted() {
|
||||
JMapper<UserDto, User> userMapper = new JMapper<>(UserDto.class, User.class);
|
||||
|
||||
User user = new User(1L, "john@test.com", LocalDate.of(1980, 8, 20));
|
||||
UserDto result = userMapper.getDestination(user);
|
||||
|
||||
assertEquals(user.getId(), result.getId());
|
||||
assertEquals(user.getEmail(), result.getUsername());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenUser_whenUseGlobalMapAnnotation_thenConverted() {
|
||||
JMapper<UserDto1, User> userMapper = new JMapper<>(UserDto1.class, User.class);
|
||||
|
||||
User user = new User(1L, "john@test.com", LocalDate.of(1980, 8, 20));
|
||||
UserDto1 result = userMapper.getDestination(user);
|
||||
|
||||
assertEquals(user.getId(), result.getId());
|
||||
assertEquals(user.getEmail(), result.getEmail());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenUser_whenUseAnnotationExplicitConversion_thenConverted() {
|
||||
JMapper<UserDto, User> userMapper = new JMapper<>(UserDto.class, User.class);
|
||||
|
||||
User user = new User(1L, "john@test.com", LocalDate.of(1980, 8, 20));
|
||||
UserDto result = userMapper.getDestination(user);
|
||||
|
||||
assertEquals(user.getId(), result.getId());
|
||||
assertEquals(user.getEmail(), result.getUsername());
|
||||
assertTrue(result.getAge() > 0);
|
||||
}
|
||||
|
||||
// ======================= XML
|
||||
|
||||
@Test
|
||||
public void givenUser_whenUseXml_thenConverted() {
|
||||
JMapper<UserDto, User> userMapper = new JMapper<>(UserDto.class, User.class, "user_jmapper.xml");
|
||||
|
||||
User user = new User(1L, "john@test.com", LocalDate.of(1980, 8, 20));
|
||||
UserDto result = userMapper.getDestination(user);
|
||||
|
||||
assertEquals(user.getId(), result.getId());
|
||||
assertEquals(user.getEmail(), result.getUsername());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenUser_whenUseXmlGlobal_thenConverted() {
|
||||
JMapper<UserDto1, User> userMapper = new JMapper<>(UserDto1.class, User.class, "user_jmapper1.xml");
|
||||
|
||||
User user = new User(1L, "john@test.com", LocalDate.of(1980, 8, 20));
|
||||
UserDto1 result = userMapper.getDestination(user);
|
||||
|
||||
assertEquals(user.getId(), result.getId());
|
||||
assertEquals(user.getEmail(), result.getEmail());
|
||||
}
|
||||
|
||||
// ===== API
|
||||
|
||||
@Test
|
||||
public void givenUser_whenUseApi_thenConverted() {
|
||||
JMapperAPI jmapperApi = new JMapperAPI().add(mappedClass(UserDto.class).add(attribute("id").value("id")).add(attribute("username").value("email")));
|
||||
JMapper<UserDto, User> userMapper = new JMapper<>(UserDto.class, User.class, jmapperApi);
|
||||
|
||||
User user = new User(1L, "john@test.com", LocalDate.of(1980, 8, 20));
|
||||
UserDto result = userMapper.getDestination(user);
|
||||
|
||||
assertEquals(user.getId(), result.getId());
|
||||
assertEquals(user.getEmail(), result.getUsername());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenUser_whenUseApiGlobal_thenConverted() {
|
||||
JMapperAPI jmapperApi = new JMapperAPI().add(mappedClass(UserDto.class).add(global()));
|
||||
JMapper<UserDto1, User> userMapper1 = new JMapper<>(UserDto1.class, User.class, jmapperApi);
|
||||
|
||||
User user = new User(1L, "john@test.com", LocalDate.of(1980, 8, 20));
|
||||
UserDto1 result = userMapper1.getDestination(user);
|
||||
|
||||
assertEquals(user.getId(), result.getId());
|
||||
assertEquals(user.getEmail(), result.getEmail());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
package com.baeldung.jmapper;
|
||||
|
||||
import com.baeldung.jmapper.relational.User;
|
||||
import com.baeldung.jmapper.relational.UserDto1;
|
||||
import com.baeldung.jmapper.relational.UserDto2;
|
||||
import com.googlecode.jmapper.RelationalJMapper;
|
||||
import com.googlecode.jmapper.api.JMapperAPI;
|
||||
import org.junit.Test;
|
||||
|
||||
import static com.googlecode.jmapper.api.JMapperAPI.attribute;
|
||||
import static com.googlecode.jmapper.api.JMapperAPI.mappedClass;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class JMapperRelationalIntegrationTest {
|
||||
|
||||
|
||||
@Test
|
||||
public void givenUser_whenUseAnnotation_thenConverted(){
|
||||
RelationalJMapper<User> relationalMapper = new RelationalJMapper<>(User.class);
|
||||
|
||||
User user = new User(1L,"john@test.com");
|
||||
UserDto1 result1 = relationalMapper.oneToMany(UserDto1.class, user);
|
||||
UserDto2 result2= relationalMapper.oneToMany(UserDto2.class, user);
|
||||
|
||||
System.out.println(result1);
|
||||
System.out.println(result2);
|
||||
assertEquals(user.getId(), result1.getId());
|
||||
assertEquals(user.getEmail(), result1.getUsername());
|
||||
assertEquals(user.getId(), result2.getId());
|
||||
assertEquals(user.getEmail(), result2.getEmail());
|
||||
}
|
||||
|
||||
//======================= XML
|
||||
|
||||
@Test
|
||||
public void givenUser_whenUseXml_thenConverted(){
|
||||
RelationalJMapper<User> relationalMapper = new RelationalJMapper<>(User.class,"user_jmapper2.xml");
|
||||
|
||||
User user = new User(1L,"john@test.com");
|
||||
UserDto1 result1 = relationalMapper.oneToMany(UserDto1.class, user);
|
||||
UserDto2 result2 = relationalMapper.oneToMany(UserDto2.class, user);
|
||||
|
||||
System.out.println(result1);
|
||||
System.out.println(result2);
|
||||
assertEquals(user.getId(), result1.getId());
|
||||
assertEquals(user.getEmail(), result1.getUsername());
|
||||
assertEquals(user.getId(), result2.getId());
|
||||
assertEquals(user.getEmail(), result2.getEmail());
|
||||
}
|
||||
|
||||
|
||||
// ===== API
|
||||
|
||||
@Test
|
||||
public void givenUser_whenUseApi_thenConverted(){
|
||||
JMapperAPI jmapperApi = new JMapperAPI()
|
||||
.add(mappedClass(User.class)
|
||||
.add(attribute("id").value("id").targetClasses(UserDto1.class,UserDto2.class))
|
||||
.add(attribute("email").targetAttributes("username","email").targetClasses(UserDto1.class,UserDto2.class)) )
|
||||
;
|
||||
RelationalJMapper<User> relationalMapper = new RelationalJMapper<>(User.class,jmapperApi);
|
||||
|
||||
User user = new User(1L,"john@test.com");
|
||||
UserDto1 result1 = relationalMapper.oneToMany(UserDto1.class, user);
|
||||
UserDto2 result2 = relationalMapper.oneToMany(UserDto2.class, user);
|
||||
|
||||
System.out.println(result1);
|
||||
System.out.println(result2);
|
||||
assertEquals(user.getId(), result1.getId());
|
||||
assertEquals(user.getEmail(), result1.getUsername());
|
||||
assertEquals(user.getId(), result2.getId());
|
||||
assertEquals(user.getEmail(), result2.getEmail());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
package com.baeldung.r;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* Test for {@link FastRMean}.
|
||||
*
|
||||
* @author Donato Rimenti
|
||||
*/
|
||||
@Ignore
|
||||
public class FastRMeanUnitTest {
|
||||
|
||||
/**
|
||||
* Object to test.
|
||||
*/
|
||||
private FastRMean fastrMean = new FastRMean();
|
||||
|
||||
/**
|
||||
* Test for {@link FastRMeanUnitTest#mean(int[])}.
|
||||
*/
|
||||
@Test
|
||||
public void givenValues_whenMean_thenCorrect() {
|
||||
int[] input = { 1, 2, 3, 4, 5 };
|
||||
double result = fastrMean.mean(input);
|
||||
Assert.assertEquals(3.0, result, 0.000001);
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package com.baeldung.r;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import javax.script.ScriptException;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* Test for {@link RCallerMean}.
|
||||
*
|
||||
* @author Donato Rimenti
|
||||
*/
|
||||
@Ignore
|
||||
public class RCallerMeanIntegrationTest {
|
||||
|
||||
/**
|
||||
* Object to test.
|
||||
*/
|
||||
private RCallerMean rcallerMean = new RCallerMean();
|
||||
|
||||
/**
|
||||
* Test for {@link RCallerMeanIntegrationTest#mean(int[])}.
|
||||
*
|
||||
* @throws ScriptException if an error occurs
|
||||
* @throws URISyntaxException if an error occurs
|
||||
*/
|
||||
@Test
|
||||
public void givenValues_whenMean_thenCorrect() throws IOException, URISyntaxException {
|
||||
int[] input = { 1, 2, 3, 4, 5 };
|
||||
double result = rcallerMean.mean(input);
|
||||
Assert.assertEquals(3.0, result, 0.000001);
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package com.baeldung.r;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import javax.script.ScriptException;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.junit.Assert;
|
||||
|
||||
/**
|
||||
* Test for {@link RenjinMean}.
|
||||
*
|
||||
* @author Donato Rimenti
|
||||
*/
|
||||
public class RenjinMeanUnitTest {
|
||||
|
||||
/**
|
||||
* Object to test.
|
||||
*/
|
||||
private RenjinMean renjinMean = new RenjinMean();
|
||||
|
||||
/**
|
||||
* Test for {@link RenjinMeanUnitTest#mean(int[])}.
|
||||
*
|
||||
* @throws ScriptException if an error occurs
|
||||
* @throws URISyntaxException if an error occurs
|
||||
* @throws IOException if an error occurs
|
||||
*/
|
||||
@Test
|
||||
public void givenValues_whenMean_thenCorrect() throws IOException, URISyntaxException, ScriptException {
|
||||
int[] input = { 1, 2, 3, 4, 5 };
|
||||
double result = renjinMean.mean(input);
|
||||
Assert.assertEquals(3.0, result, 0.000001);
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
package com.baeldung.r;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.rosuda.REngine.REXPMismatchException;
|
||||
import org.rosuda.REngine.REngineException;
|
||||
|
||||
/**
|
||||
* Test for {@link RserveMean}.
|
||||
*
|
||||
* @author Donato Rimenti
|
||||
*/
|
||||
@Ignore
|
||||
public class RserveMeanIntegrationTest {
|
||||
|
||||
/**
|
||||
* Object to test.
|
||||
*/
|
||||
private RserveMean rserveMean = new RserveMean();
|
||||
|
||||
/**
|
||||
* Test for {@link RserveMeanIntegrationTest#mean(int[])}.
|
||||
*
|
||||
* @throws REXPMismatchException if an error occurs
|
||||
* @throws REngineException if an error occurs
|
||||
*/
|
||||
@Test
|
||||
public void givenValues_whenMean_thenCorrect() throws REngineException, REXPMismatchException {
|
||||
int[] input = { 1, 2, 3, 4, 5 };
|
||||
double result = rserveMean.mean(input);
|
||||
Assert.assertEquals(3.0, result, 0.000001);
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
customMean <- function(vector) {
|
||||
mean(vector)
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
<jmapper>
|
||||
<class name="com.baeldung.jmapper.UserDto">
|
||||
<attribute name="id">
|
||||
<value name="id"/>
|
||||
</attribute>
|
||||
<attribute name="username">
|
||||
<value name="email"/>
|
||||
</attribute>
|
||||
</class>
|
||||
</jmapper>
|
||||
@@ -1,5 +0,0 @@
|
||||
<jmapper>
|
||||
<class name="com.baeldung.jmapper.UserDto1">
|
||||
<global/>
|
||||
</class>
|
||||
</jmapper>
|
||||
@@ -1,21 +0,0 @@
|
||||
<jmapper>
|
||||
<class name="com.baeldung.jmapper.relational.User">
|
||||
<attribute name="id">
|
||||
<value name="id"/>
|
||||
<classes>
|
||||
<class name="com.baeldung.jmapper.relational.UserDto1"/>
|
||||
<class name="com.baeldung.jmapper.relational.UserDto2"/>
|
||||
</classes>
|
||||
</attribute>
|
||||
<attribute name="email">
|
||||
<attributes>
|
||||
<attribute name="username"/>
|
||||
<attribute name="email"/>
|
||||
</attributes>
|
||||
<classes>
|
||||
<class name="com.baeldung.jmapper.relational.UserDto1"/>
|
||||
<class name="com.baeldung.jmapper.relational.UserDto2"/>
|
||||
</classes>
|
||||
</attribute>
|
||||
</class>
|
||||
</jmapper>
|
||||
Reference in New Issue
Block a user