
org.incode.example.settings.dom.UserSettingRepository Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of incode-example-settings-dom Show documentation
Show all versions of incode-example-settings-dom Show documentation
A module providing settings persistence, enabling profiling, background execution and
extended auditing capabilities.
The newest version!
package org.incode.example.settings.dom;
import java.util.List;
import java.util.concurrent.Callable;
import javax.inject.Inject;
import org.joda.time.LocalDate;
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.query.QueryDefault;
import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.incode.example.settings.dom.jdo.UserSettingJdo;
@DomainService(
nature = NatureOfService.DOMAIN,
repositoryFor = UserSettingJdo.class
)
public class UserSettingRepository {
//region > find
@Programmatic
public UserSetting find(
final String user,
final String key) {
return queryResultsCache.execute(new Callable() {
@Override
public UserSetting call() throws Exception {
return doFind(user, key);
}
}, UserSettingRepository.class, "find", user, key);
}
protected UserSettingJdo doFind(final String user, final String key) {
return repositoryService.firstMatch(
new QueryDefault<>(UserSettingJdo.class,
"findByUserAndKey",
"user",user,
"key", key));
}
//endregion
//region > listAll
@Programmatic
@SuppressWarnings({ "unchecked", "rawtypes" })
public List listAllFor(
final String user) {
return (List)repositoryService.allMatches(
new QueryDefault<>(UserSettingJdo.class,
"findByUser",
"user", user));
}
//endregion
//region > listAll
@Programmatic
@SuppressWarnings({ "unchecked", "rawtypes" })
public List listAll() {
return (List)repositoryService.allMatches(
new QueryDefault<>(UserSettingJdo.class,
"findAll"));
}
//endregion
//region > newString
@Programmatic
public UserSettingJdo newString(
final String user,
final String key,
final String description,
final String value) {
return newSetting(user, key, description, SettingType.STRING, value);
}
//endregion
//region > newInt
@Programmatic
public UserSettingJdo newInt(
final String user,
final String key,
final String description,
final Integer value) {
return newSetting(user, key, description, SettingType.INT, value.toString());
}
//endregion
//region > newLong
@Programmatic
public UserSettingJdo newLong(
final String user,
final String key,
final String description,
final Long value) {
return newSetting(user, key, description, SettingType.LONG, value.toString());
}
//endregion
//region > newLocalDate
@Programmatic
public UserSettingJdo newLocalDate(
final String user,
final String key,
final String description,
final LocalDate value) {
return newSetting(user, key, description, SettingType.LOCAL_DATE, value.toString(SettingAbstract.DATE_FORMATTER));
}
//endregion
//region > newBoolean
@Programmatic
public UserSettingJdo newBoolean(
final String user,
final String key,
final String description,
final Boolean value) {
return newSetting(user, key, description, SettingType.BOOLEAN, Boolean.toString(value != null && value));
}
//endregion
//region > helpers
private UserSettingJdo newSetting(
final String user,
final String key, final String description, final SettingType settingType, final String valueRaw) {
final UserSettingJdo setting = repositoryService.instantiate(UserSettingJdo.class);
setting.setUser(user);
setting.setKey(key);
setting.setType(settingType);
setting.setDescription(description);
setting.setValueRaw(valueRaw);
repositoryService.persist(setting);
return setting;
}
//endregion
//region > injected
@Inject
RepositoryService repositoryService;
@Inject
QueryResultsCache queryResultsCache;
//endregion
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy