Skip to content

Commit

Permalink
Support eclipse buildship (#193)
Browse files Browse the repository at this point in the history
* Support buildship

* Add java-17 module

* Add a notice for Eclipse users
  • Loading branch information
nakamura-to authored Feb 3, 2024
1 parent eba733c commit cf0b7ed
Show file tree
Hide file tree
Showing 15 changed files with 529 additions and 2 deletions.
21 changes: 20 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,23 @@ This is a getting-started project for [Doma](https://github.com/domaframework/do

See [Getting started](https://doma.readthedocs.io/en/latest/getting-started/).

[![Java CI with Gradle](https://github.com/domaframework/getting-started/workflows/Java%20CI%20with%20Gradle/badge.svg)](https://github.com/domaframework/getting-started/actions?query=workflow%3A%22Java+CI+with+Gradle%22)
[![Java CI with Gradle](https://github.com/domaframework/getting-started/workflows/Java%20CI%20with%20Gradle/badge.svg)](https://github.com/domaframework/getting-started/actions?query=workflow%3A%22Java+CI+with+Gradle%22)

Notice
------

For Eclipse users, to import this project into Eclipse, adhere to the instructions outlined below.

**1. Run the Gradle command:**

```sh
$ ./gradlew cleanEclipse eclipse
```

**2. Navigate through the Eclipse menu and select:**

```
File > Import > General > Existing Projects into Workspace
```

It is important not to choose `File > Import > Gradle > Existing Gradle Project`.
18 changes: 17 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,18 @@ subprojects {
named("build") {
dependsOn("spotlessApply")
}

named("eclipse") {
doFirst {
val prefs = file(".settings/org.eclipse.buildship.core.prefs")
if(!prefs.exists()){
prefs.appendText("""
connection.project.dir=
eclipse.preferences.version=1
""".trimIndent())
}
}
}
}

dependencies {
Expand Down Expand Up @@ -61,11 +73,15 @@ subprojects {
}
}
}
project {
buildCommand("org.eclipse.buildship.core.gradleprojectbuilder")
natures("org.eclipse.buildship.core.gradleprojectnature")
}
}

configure<com.diffplug.gradle.spotless.SpotlessExtension> {
java {
googleJavaFormat("1.9")
googleJavaFormat("1.19.2")
}
}
}
12 changes: 12 additions & 0 deletions java-17/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
.classpath
.factorypath
.project
.settings
/.apt_generated
/bin
/build
.gradle
.idea
out
/.apt_generated_tests/
.sdkmanrc
19 changes: 19 additions & 0 deletions java-17/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
plugins {
application
}

application {
mainClass.set("boilerplate.java17.Main")
}

java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
}
}

eclipse {
jdt {
javaRuntimeName = "JavaSE-17"
}
}
48 changes: 48 additions & 0 deletions java-17/src/main/java/boilerplate/java17/DbConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package boilerplate.java17;

import java.util.Objects;
import javax.sql.DataSource;
import org.seasar.doma.jdbc.Config;
import org.seasar.doma.jdbc.JdbcLogger;
import org.seasar.doma.jdbc.dialect.Dialect;
import org.seasar.doma.jdbc.tx.LocalTransactionDataSource;
import org.seasar.doma.jdbc.tx.TransactionManager;

public class DbConfig implements Config {

private final Dialect dialect;
private final LocalTransactionDataSource dataSource;
private final JdbcLogger jdbcLogger;
private final TransactionManager transactionManager;

public DbConfig(
Dialect dialect,
LocalTransactionDataSource dataSource,
JdbcLogger jdbcLogger,
TransactionManager transactionManager) {
this.dialect = Objects.requireNonNull(dialect);
this.dataSource = Objects.requireNonNull(dataSource);
this.jdbcLogger = Objects.requireNonNull(jdbcLogger);
this.transactionManager = Objects.requireNonNull(transactionManager);
}

@Override
public Dialect getDialect() {
return dialect;
}

@Override
public DataSource getDataSource() {
return dataSource;
}

@Override
public JdbcLogger getJdbcLogger() {
return jdbcLogger;
}

@Override
public TransactionManager getTransactionManager() {
return transactionManager;
}
}
39 changes: 39 additions & 0 deletions java-17/src/main/java/boilerplate/java17/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package boilerplate.java17;

import boilerplate.java17.dao.AppDaoImpl;
import boilerplate.java17.repository.EmployeeRepository;
import org.seasar.doma.jdbc.Config;
import org.seasar.doma.jdbc.dialect.H2Dialect;
import org.seasar.doma.jdbc.tx.LocalTransactionDataSource;
import org.seasar.doma.jdbc.tx.LocalTransactionManager;
import org.seasar.doma.slf4j.Slf4jJdbcLogger;

public class Main {

public static void main(String[] args) {
var config = createConfig();
var tm = config.getTransactionManager();

// setup database
var appDao = new AppDaoImpl(config);
tm.required(appDao::create);

// read and update
tm.required(
() -> {
var repository = new EmployeeRepository(config);
var employee = repository.selectById(1);
employee.age += 1;
repository.update(employee);
});
}

private static Config createConfig() {
var dialect = new H2Dialect();
var dataSource =
new LocalTransactionDataSource("jdbc:h2:mem:tutorial;DB_CLOSE_DELAY=-1", "sa", null);
var jdbcLogger = new Slf4jJdbcLogger();
var transactionManager = new LocalTransactionManager(dataSource, jdbcLogger);
return new DbConfig(dialect, dataSource, jdbcLogger, transactionManager);
}
}
33 changes: 33 additions & 0 deletions java-17/src/main/java/boilerplate/java17/dao/AppDao.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package boilerplate.java17.dao;

import org.seasar.doma.Dao;
import org.seasar.doma.Script;
import org.seasar.doma.Sql;

@Dao
public interface AppDao {

@Sql(
"""
create sequence employee_seq start with 100 increment by 1;
create table employee (
id integer not null primary key,
name varchar(255) not null,
age integer not null,\s
version integer not null);
insert into employee values(1,'ALLEN',30, 0);
insert into employee values(2,'WARD',32, 0);
insert into employee values(3,'JONES',38, 0);
""")
@Script
void create();

@Sql("""
drop sequence employee_seq;
drop table employee;
""")
@Script
void drop();
}
47 changes: 47 additions & 0 deletions java-17/src/main/java/boilerplate/java17/dao/EmployeeDao.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package boilerplate.java17.dao;

import boilerplate.java17.entity.Employee;
import java.util.List;
import org.seasar.doma.Dao;
import org.seasar.doma.Delete;
import org.seasar.doma.Insert;
import org.seasar.doma.Select;
import org.seasar.doma.Sql;
import org.seasar.doma.Update;

@Dao
public interface EmployeeDao {

@Sql(
"""
select
/*%expand*/*
from
employee
order by
id
""")
@Select
List<Employee> selectAll();

@Sql(
"""
select
/*%expand*/*
from
employee
where
id = /* id */0
""")
@Select
Employee selectById(Integer id);

@Insert
int insert(Employee employee);

@Update
int update(Employee employee);

@Delete
int delete(Employee employee);
}
29 changes: 29 additions & 0 deletions java-17/src/main/java/boilerplate/java17/entity/Employee.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package boilerplate.java17.entity;

import org.seasar.doma.Entity;
import org.seasar.doma.GeneratedValue;
import org.seasar.doma.GenerationType;
import org.seasar.doma.Id;
import org.seasar.doma.Metamodel;
import org.seasar.doma.SequenceGenerator;
import org.seasar.doma.Version;

@Entity(metamodel = @Metamodel)
public class Employee {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@SequenceGenerator(sequence = "EMPLOYEE_SEQ")
public Integer id;

public String name;

public Integer age;

@Version public Integer version;

@Override
public String toString() {
return "Employee [id=" + id + ", name=" + name + ", age=" + age + ", version=" + version + "]";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package boilerplate.java17.repository;

import boilerplate.java17.entity.Employee;
import boilerplate.java17.entity.Employee_;
import java.util.List;
import java.util.Objects;
import org.seasar.doma.jdbc.Config;
import org.seasar.doma.jdbc.criteria.Entityql;

public class EmployeeRepository {

private final Entityql entityql;

public EmployeeRepository(Config config) {
Objects.requireNonNull(config);
this.entityql = new Entityql(config);
}

public List<Employee> selectAll() {
var e = new Employee_();
return entityql.from(e).fetch();
}

public Employee selectById(Integer id) {
var e = new Employee_();
return entityql.from(e).where(c -> c.eq(e.id, id)).fetchOne();
}

public void insert(Employee employee) {
var e = new Employee_();
entityql.insert(e, employee).execute();
}

public void update(Employee employee) {
var e = new Employee_();
entityql.update(e, employee).execute();
}

public void delete(Employee employee) {
var e = new Employee_();
entityql.delete(e, employee).execute();
}
}
14 changes: 14 additions & 0 deletions java-17/src/main/resources/logback.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<logger name="org.seasar.doma.jdbc.LogKind.SQL" level="debug"/>
<logger name="org.seasar.doma.jdbc.LogKind.SQL.SCRIPT" level="off"/>

<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Loading

0 comments on commit cf0b7ed

Please sign in to comment.