This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository bow. See https://gitlab.nuiton.org/chorem/bow.git commit 95aca980e66951e488803d1c623af256742013a7 Author: Benjamin <poussin@codelutin.com> Date: Fri Oct 26 16:57:50 2018 +0200 tout debut pour aurore (rien ne marche) --- .../src/main/java/org/chorem/bow/BowContext.java | 29 ++++++++++++++++ .../main/java/org/chorem/bow/model/Bookmark.java | 31 +++++++++++++++++ .../java/org/chorem/bow/model/BowPreference.java | 26 +++++++++++++++ .../java/org/chorem/bow/model/BowSearchPrefix.java | 18 ++++++++++ .../chorem/bow/persistence/BookmarkRepository.java | 14 ++++++++ .../org/chorem/bow/persistence/BowRepository.java | 24 +++++++++++++ .../org/chorem/bow/rest/BookmarkResources.java | 25 ++++++++++++++ bow-ui/pom.xml | 39 +++++++++++++++++++++- 8 files changed, 205 insertions(+), 1 deletion(-) diff --git a/bow-api/src/main/java/org/chorem/bow/BowContext.java b/bow-api/src/main/java/org/chorem/bow/BowContext.java new file mode 100644 index 0000000..78f7545 --- /dev/null +++ b/bow-api/src/main/java/org/chorem/bow/BowContext.java @@ -0,0 +1,29 @@ +package org.chorem.bow; + +import org.nuiton.spgeed.SqlSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; +import java.sql.SQLException; +import java.util.function.Function; + +@Component +public class BowContext { + @Autowired + private DataSource dataSource; + + @Autowired + private BowRepository repo; + + public <T, R> R doWith(Class<T> c, Function<T, R> f) { + try (SqlSession session = repo.getSqlSession(dataSource)) { + T dao = session.getDao(c); + R result = f.apply(dao); + return result; + } catch (SQLException eee) { + throw new RepositoryException("Can't close session", eee); + } + } + +} diff --git a/bow-api/src/main/java/org/chorem/bow/model/Bookmark.java b/bow-api/src/main/java/org/chorem/bow/model/Bookmark.java new file mode 100644 index 0000000..c4c0208 --- /dev/null +++ b/bow-api/src/main/java/org/chorem/bow/model/Bookmark.java @@ -0,0 +1,31 @@ +package org.chorem.bow.model; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +import org.springframework.hateoas.Identifiable; + +import java.net.URI; +import java.util.Date; +import java.util.UUID; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +@EqualsAndHashCode(of = "id") +public class Bookmark implements Identifiable<UUID> { + private UUID id = UUID.randomUUID(); + private URI uri; + private String description; + private String[] labels; + private Date creationDate; + private Date importDate; + private String privateAlias; + private String publicAlias; + private String authenticationInfo; + private byte[] favicon; + private byte[] screenshot; +} diff --git a/bow-api/src/main/java/org/chorem/bow/model/BowPreference.java b/bow-api/src/main/java/org/chorem/bow/model/BowPreference.java new file mode 100644 index 0000000..9527229 --- /dev/null +++ b/bow-api/src/main/java/org/chorem/bow/model/BowPreference.java @@ -0,0 +1,26 @@ +package org.chorem.bow.model; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +import org.springframework.hateoas.Identifiable; + +import java.util.List; +import java.util.UUID; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +@EqualsAndHashCode(of = "id") +public class BowPreference implements Identifiable<UUID> { + private UUID id = UUID.randomUUID(); + private int tags; + private int bookmarks; + private String colors; + private boolean screeshot; + private boolean favicon; + private List<BowSearchPrefix> prefixes; +} diff --git a/bow-api/src/main/java/org/chorem/bow/model/BowSearchPrefix.java b/bow-api/src/main/java/org/chorem/bow/model/BowSearchPrefix.java new file mode 100644 index 0000000..ee97f6f --- /dev/null +++ b/bow-api/src/main/java/org/chorem/bow/model/BowSearchPrefix.java @@ -0,0 +1,18 @@ +package org.chorem.bow.model; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.net.URL; + +@Accessors(chain = true) +@Getter +@Setter +@ToString +public class BowSearchPrefix { + private String prefix; + private URL search; + private URL suggestion; +} diff --git a/bow-api/src/main/java/org/chorem/bow/persistence/BookmarkRepository.java b/bow-api/src/main/java/org/chorem/bow/persistence/BookmarkRepository.java new file mode 100644 index 0000000..9874f49 --- /dev/null +++ b/bow-api/src/main/java/org/chorem/bow/persistence/BookmarkRepository.java @@ -0,0 +1,14 @@ +package org.chorem.bow.persistence; + +import org.chorem.bow.model.Bookmark; +import org.nuiton.spgeed.Chunk; +import org.nuiton.spgeed.annotations.Select; + +import java.util.List; + +public interface BookmarkRepository { + + @Select(sql = "SELECT * FROM EnmaUser where (uri @@ to_tsquery(${fulltext}) or description @@ to_tsquery(${fulltext})) and tags=${tags}") + Chunk<Bookmark> findAll(Chunk<Bookmark> last, String fulltext, List<String> tags); + +} diff --git a/bow-api/src/main/java/org/chorem/bow/persistence/BowRepository.java b/bow-api/src/main/java/org/chorem/bow/persistence/BowRepository.java new file mode 100644 index 0000000..2715bc4 --- /dev/null +++ b/bow-api/src/main/java/org/chorem/bow/persistence/BowRepository.java @@ -0,0 +1,24 @@ +package org.chorem.bow.persistence; + +import org.nuiton.spgeed.Query; +import org.nuiton.spgeed.SqlSession; + +import javax.sql.DataSource; +import java.util.Map; +import java.util.stream.Collectors; + +public class BowRepository { + + public SqlSession getSqlSession(DataSource dataSource) { + SqlSession result = new SqlSession(dataSource); + result.addFunction("keyValue", (Query query, Object in, Object... args) -> { + Map<String, Object> map = Map.class.cast(in); + String s = map.entrySet().stream() + .map(e -> e.getKey() + "=" + query.addSqlParameter(e.getValue())) + .collect(Collectors.joining(", ")); + return s; + }); + return result; + } + +} diff --git a/bow-api/src/main/java/org/chorem/bow/rest/BookmarkResources.java b/bow-api/src/main/java/org/chorem/bow/rest/BookmarkResources.java new file mode 100644 index 0000000..23a19e2 --- /dev/null +++ b/bow-api/src/main/java/org/chorem/bow/rest/BookmarkResources.java @@ -0,0 +1,25 @@ +package org.chorem.bow.rest; + +import org.chorem.bow.BowContext; +import org.chorem.bow.model.Bookmark; +import org.nuiton.spgeed.Chunk; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(path = "/bookmarks", produces = "application/json; charset=UTF-8") +public class BookmarkResources { + + @Autowired + private BowContext ctx; + + @GetMapping() + public BowChunk<Bookmark> list(@RequestParam(name = "page", defaultValue = "1") int page, @RequestParam(name = "page_size", defaultValue = "50") int pageSize) { + BowChunk<Bookmark> result = ctx.doWith(EnmaUserRepository.class, repo -> repo.findAll(Chunk.restart(pageSize, (page - 1) * pageSize))); + return result; + } + +} diff --git a/bow-ui/pom.xml b/bow-ui/pom.xml index 9fd76c5..f82f9d6 100644 --- a/bow-ui/pom.xml +++ b/bow-ui/pom.xml @@ -50,7 +50,6 @@ <!-- Post Release configuration --> <skipPostRelease>false</skipPostRelease> <redmine.releaseFiles>target/${project.artifactId}-${project.version}.war</redmine.releaseFiles> - </properties> <dependencies> @@ -80,6 +79,32 @@ <dependency> <groupId>org.nuiton.wikitty</groupId> <artifactId>wikitty-api</artifactId> + <exclusions> + <exclusion> + <groupId>org.jacorb</groupId> + <artifactId>jacorb</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.jacorb</groupId> + <artifactId>jacorb</artifactId> + <version>2.3.1</version> + <exclusions> + <exclusion> + <groupId>picocontainer</groupId> + <artifactId>picocontainer</artifactId> + </exclusion> + <exclusion> + <groupId>picocontainer</groupId> + <artifactId>picocontainer-gems</artifactId> + </exclusion> + <exclusion> + <groupId>picocontainer</groupId> + <artifactId>picocontainer-tck</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> @@ -164,12 +189,24 @@ <groupId>org.nuiton.wikitty</groupId> <artifactId>wikitty-jdbc</artifactId> <scope>runtime</scope> + <exclusions> + <exclusion> + <groupId>org.jacorb</groupId> + <artifactId>jacorb</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.nuiton.wikitty</groupId> <artifactId>wikitty-solr</artifactId> <scope>runtime</scope> + <exclusions> + <exclusion> + <groupId>org.jacorb</groupId> + <artifactId>jacorb</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.