blob: 8d7506235071a2596a06fb07153da99876a817b0 [file] [log] [blame]
package domainapp.modules.simple.dom.so;
import java.util.List;
import javax.inject.Inject;
import javax.persistence.TypedQuery;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.query.Query;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.persistence.jpa.applib.services.JpaSupportService;
import domainapp.modules.simple.types.Name;
@DomainService(
nature = NatureOfService.VIEW,
objectType = "simple.SimpleObjects"
)
@lombok.RequiredArgsConstructor(onConstructor_ = {@Inject} )
public class SimpleObjects {
private final RepositoryService repositoryService;
private final JpaSupportService jpaSupportService;
private final SimpleObjectRepository simpleObjectRepository;
@Action(semantics = SemanticsOf.NON_IDEMPOTENT)
@ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR)
public SimpleObject create(
@Name final String name) {
return repositoryService.persist(SimpleObject.withName(name));
}
@Action(semantics = SemanticsOf.NON_IDEMPOTENT)
@ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR)
public List<SimpleObject> findByNameLike(
@Name final String name) {
return repositoryService.allMatches(
Query.named(SimpleObject.class, "SimpleObject.findByNameLike")
.withParameter("name", "%" + name + "%"));
}
@Action(semantics = SemanticsOf.SAFE)
@ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT, promptStyle = PromptStyle.DIALOG_SIDEBAR)
public List<SimpleObject> findByName(
@Name final String name
) {
return simpleObjectRepository.findByNameContaining(name);
}
@Programmatic
public SimpleObject findByNameExact(final String name) {
return simpleObjectRepository.findByName(name);
}
@Action(semantics = SemanticsOf.SAFE)
@ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT)
public List<SimpleObject> listAll() {
return simpleObjectRepository.findAll();
}
@Programmatic
public void ping() {
jpaSupportService.getEntityManager(SimpleObject.class)
.ifSuccess(entityManager -> {
final TypedQuery<SimpleObject> q = entityManager.createQuery(
"SELECT p FROM SimpleObject p ORDER BY p.name",
SimpleObject.class)
.setMaxResults(1);
q.getResultList();
});
}
}