mirror of
https://github.com/theonedev/onedev.git
synced 2025-12-08 18:26:30 +00:00
Add initialization manager.
This commit is contained in:
parent
389e502a53
commit
65473b2720
@ -52,7 +52,7 @@ public class DefaultGeneralDao implements GeneralDao {
|
||||
getSession().delete(entity);
|
||||
}
|
||||
|
||||
protected Session getSession() {
|
||||
private Session getSession() {
|
||||
return sessionProvider.get();
|
||||
}
|
||||
|
||||
@ -92,6 +92,8 @@ public class DefaultGeneralDao implements GeneralDao {
|
||||
@Override
|
||||
public Object find(DetachedCriteria detachedCriteria) {
|
||||
Criteria criteria = detachedCriteria.getExecutableCriteria(getSession());
|
||||
criteria.setFirstResult(0);
|
||||
criteria.setMaxResults(1);
|
||||
return criteria.uniqueResult();
|
||||
}
|
||||
|
||||
|
||||
@ -2,9 +2,6 @@ package com.pmease.commons.persistence.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Provider;
|
||||
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.criterion.Criterion;
|
||||
import org.hibernate.criterion.DetachedCriteria;
|
||||
import org.hibernate.criterion.Order;
|
||||
@ -17,15 +14,12 @@ public class DefaultGenericDao<T extends AbstractEntity> implements GenericDao<T
|
||||
|
||||
private GeneralDao generalDao;
|
||||
|
||||
private Provider<Session> sessionProvider;
|
||||
|
||||
protected final Class<T> entityClass;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Inject
|
||||
public DefaultGenericDao(GeneralDao generalDao, Provider<Session> sessionProvider) {
|
||||
public DefaultGenericDao(GeneralDao generalDao) {
|
||||
this.generalDao = generalDao;
|
||||
this.sessionProvider = sessionProvider;
|
||||
List<Class<?>> typeArguments = ClassUtils.getTypeArguments(DefaultGenericDao.class, getClass());
|
||||
entityClass = ((Class<T>) typeArguments.get(0));
|
||||
}
|
||||
@ -88,9 +82,14 @@ public class DefaultGenericDao<T extends AbstractEntity> implements GenericDao<T
|
||||
return query(criterions, null, 0, 0);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public T find(Criterion[] criterions) {
|
||||
return find(criterions, null);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public T find(Criterion[] criterions, Order[] orders) {
|
||||
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(entityClass);
|
||||
|
||||
if (criterions != null) {
|
||||
@ -98,10 +97,12 @@ public class DefaultGenericDao<T extends AbstractEntity> implements GenericDao<T
|
||||
detachedCriteria.add(criterion);
|
||||
}
|
||||
|
||||
if (orders != null) {
|
||||
for (Order order: orders)
|
||||
detachedCriteria.addOrder(order);
|
||||
}
|
||||
|
||||
return (T) generalDao.find(detachedCriteria);
|
||||
}
|
||||
|
||||
protected Session getSession() {
|
||||
return sessionProvider.get();
|
||||
}
|
||||
}
|
||||
|
||||
@ -87,9 +87,7 @@ public interface GeneralDao {
|
||||
* @param detachedCriteria
|
||||
* Hibernate {@link DetachedCriteria}
|
||||
* @return
|
||||
* the single entity. null if not found
|
||||
* @throws
|
||||
* HibernateException if there is more than one matching result
|
||||
* the first matching entity, or null if not found
|
||||
*/
|
||||
Object find(DetachedCriteria detachedCriteria);
|
||||
|
||||
|
||||
@ -4,14 +4,13 @@ import java.util.List;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.hibernate.HibernateException;
|
||||
import org.hibernate.criterion.Criterion;
|
||||
import org.hibernate.criterion.Order;
|
||||
|
||||
import com.pmease.commons.persistence.AbstractEntity;
|
||||
|
||||
|
||||
public interface GenericDao<T extends AbstractEntity> {
|
||||
|
||||
/**
|
||||
* Get the entity with the specified type and id from the datastore.
|
||||
* If none is found, return null.
|
||||
@ -88,16 +87,28 @@ public interface GenericDao<T extends AbstractEntity> {
|
||||
List<T> query(@Nullable Criterion[] criterions);
|
||||
|
||||
/**
|
||||
* This method expects to lookup a single entity with specified criteria
|
||||
* This method expects to lookup a single entity with specified criteria.
|
||||
*
|
||||
* @param criterions
|
||||
* Hibernate criterions used to find the object
|
||||
* Hibernate criterions used to find the object, use <i>null</i> if
|
||||
* criterions are not interested
|
||||
* @return
|
||||
* the single entity. null if not found
|
||||
* @throws
|
||||
* HibernateException if there is more than one matching result
|
||||
* any matching entity. null if not found
|
||||
*/
|
||||
Object find(@Nullable Criterion[] criterions);
|
||||
T find(@Nullable Criterion[] criterions);
|
||||
|
||||
/**
|
||||
* This method expects to find the first matching entity.
|
||||
*
|
||||
* @param criterions
|
||||
* Hibernate criterions used to find the object, use <i>null</i> if
|
||||
* criterions are not interested
|
||||
* @param orders
|
||||
* orders to search by, use <i>null</i> if order is not interested
|
||||
* @return
|
||||
* the first matching entity. null if not found
|
||||
*/
|
||||
T find(@Nullable Criterion[] criterions, @Nullable Order[] orders);
|
||||
|
||||
/**
|
||||
* Count entity matching specified hibernate criterions.
|
||||
@ -111,4 +122,5 @@ public interface GenericDao<T extends AbstractEntity> {
|
||||
* number of entities matching specified criterions
|
||||
*/
|
||||
int count(@Nullable Criterion[] criterions);
|
||||
|
||||
}
|
||||
|
||||
@ -8,6 +8,7 @@ import com.pmease.commons.loader.AppName;
|
||||
import com.pmease.commons.persistence.PrefixedNamingStrategy;
|
||||
import com.pmease.commons.security.AbstractRealm;
|
||||
import com.pmease.commons.web.AbstractWicketConfig;
|
||||
import com.pmease.gitop.core.permission.UserRealm;
|
||||
|
||||
/**
|
||||
* NOTE: Do not forget to rename moduleClass property defined in the pom if you've renamed this class.
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
package com.pmease.gitop.core;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public abstract class ManualConfig {
|
||||
|
||||
private final Serializable setting;
|
||||
|
||||
public ManualConfig(Serializable setting) {
|
||||
this.setting = setting;
|
||||
}
|
||||
|
||||
public Serializable getSetting() {
|
||||
return setting;
|
||||
}
|
||||
|
||||
public abstract Skippable getSkippable();
|
||||
|
||||
public abstract void complete();
|
||||
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
package com.pmease.gitop.core;
|
||||
|
||||
public interface Skippable {
|
||||
void skip();
|
||||
}
|
||||
@ -0,0 +1,65 @@
|
||||
package com.pmease.gitop.core.manager;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.google.inject.ImplementedBy;
|
||||
import com.pmease.commons.persistence.dao.GenericDao;
|
||||
import com.pmease.gitop.core.manager.impl.DefaultConfigManager;
|
||||
import com.pmease.gitop.core.model.Config;
|
||||
import com.pmease.gitop.core.setting.MailSetting;
|
||||
import com.pmease.gitop.core.setting.StorageSetting;
|
||||
|
||||
@ImplementedBy(DefaultConfigManager.class)
|
||||
public interface ConfigManager extends GenericDao<Config> {
|
||||
|
||||
/**
|
||||
* Retrieve config by key.
|
||||
* <p>
|
||||
* @param key
|
||||
* key of the config
|
||||
* @return
|
||||
* config associated with specified key, or <i>null</i> if
|
||||
* no config record found for the key
|
||||
*/
|
||||
Config getConfig(Config.Key key);
|
||||
|
||||
/**
|
||||
* Get storage setting.
|
||||
* <p>
|
||||
* @return
|
||||
* storage setting, never <i>null</i>
|
||||
* @throws
|
||||
* RuntimeException if storage setting record is not found
|
||||
* @throws
|
||||
* NullPointerException if storage setting record exists but value is null
|
||||
*/
|
||||
StorageSetting getStorageSetting();
|
||||
|
||||
/**
|
||||
* Save specified storage setting.
|
||||
* <p>
|
||||
* @param storageSetting
|
||||
* storage setting to be saved
|
||||
*/
|
||||
void saveStorageSetting(StorageSetting storageSetting);
|
||||
|
||||
/**
|
||||
* Get mail setting.
|
||||
* <p>
|
||||
* @return
|
||||
* mail setting, or <i>null</i> if mail setting record exists but value is
|
||||
* null.
|
||||
* @throws
|
||||
* RuntimeException if mail setting record is not found
|
||||
*/
|
||||
MailSetting getMailSetting();
|
||||
|
||||
/**
|
||||
* Save specified mail setting.
|
||||
* <p>
|
||||
* @param mailSetting
|
||||
* mail setting to be saved. Use <i>null</i> to clear the setting (but
|
||||
* setting record will still be remained in database)
|
||||
*/
|
||||
void saveMailSetting(@Nullable MailSetting mailSetting);
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.pmease.gitop.core.manager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.inject.ImplementedBy;
|
||||
import com.pmease.gitop.core.ManualConfig;
|
||||
import com.pmease.gitop.core.manager.impl.DefaultInitManager;
|
||||
|
||||
@ImplementedBy(DefaultInitManager.class)
|
||||
public interface InitManager {
|
||||
|
||||
List<ManualConfig> init();
|
||||
|
||||
}
|
||||
@ -12,7 +12,7 @@ public interface UserManager extends GenericDao<User> {
|
||||
* Find root account in the system.
|
||||
*
|
||||
* @return
|
||||
* root account of the system, or null if root account has not been populated
|
||||
* root account of the system. Never be <i>null</i>
|
||||
*/
|
||||
User getRootUser();
|
||||
|
||||
|
||||
@ -1,11 +1,8 @@
|
||||
package com.pmease.gitop.core.manager.impl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.hibernate.Session;
|
||||
|
||||
import com.pmease.commons.persistence.dao.DefaultGenericDao;
|
||||
import com.pmease.commons.persistence.dao.GeneralDao;
|
||||
import com.pmease.gitop.core.manager.AuthorizationManager;
|
||||
@ -15,8 +12,8 @@ import com.pmease.gitop.core.model.Authorization;
|
||||
public class DefaultAuthorizationManager extends DefaultGenericDao<Authorization> implements AuthorizationManager {
|
||||
|
||||
@Inject
|
||||
public DefaultAuthorizationManager(GeneralDao generalDao, Provider<Session> sessionProvider) {
|
||||
super(generalDao, sessionProvider);
|
||||
public DefaultAuthorizationManager(GeneralDao generalDao) {
|
||||
super(generalDao);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,10 +1,8 @@
|
||||
package com.pmease.gitop.core.manager.impl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.criterion.Criterion;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
|
||||
@ -21,8 +19,8 @@ import com.pmease.gitop.core.model.Repository;
|
||||
public class DefaultBranchManager extends DefaultGenericDao<Branch> implements BranchManager {
|
||||
|
||||
@Inject
|
||||
public DefaultBranchManager(GeneralDao generalDao, Provider<Session> sessionProvider) {
|
||||
super(generalDao, sessionProvider);
|
||||
public DefaultBranchManager(GeneralDao generalDao) {
|
||||
super(generalDao);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,84 @@
|
||||
package com.pmease.gitop.core.manager.impl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.hibernate.criterion.Criterion;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.pmease.commons.persistence.Transactional;
|
||||
import com.pmease.commons.persistence.dao.DefaultGenericDao;
|
||||
import com.pmease.commons.persistence.dao.GeneralDao;
|
||||
import com.pmease.gitop.core.manager.ConfigManager;
|
||||
import com.pmease.gitop.core.model.Config;
|
||||
import com.pmease.gitop.core.model.Config.Key;
|
||||
import com.pmease.gitop.core.setting.MailSetting;
|
||||
import com.pmease.gitop.core.setting.StorageSetting;
|
||||
|
||||
@Singleton
|
||||
public class DefaultConfigManager extends DefaultGenericDao<Config> implements ConfigManager {
|
||||
|
||||
@Inject
|
||||
public DefaultConfigManager(GeneralDao generalDao) {
|
||||
super(generalDao);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public StorageSetting getStorageSetting() {
|
||||
Config config = getConfig(Key.STORAGE);
|
||||
if (config != null) {
|
||||
StorageSetting storageSetting = (StorageSetting) config.getSetting();
|
||||
Preconditions.checkNotNull(storageSetting);
|
||||
return storageSetting;
|
||||
} else {
|
||||
throw new RuntimeException("Unable to find storage setting record.");
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void saveStorageSetting(StorageSetting storageSetting) {
|
||||
Preconditions.checkNotNull(storageSetting);
|
||||
|
||||
Config config = getConfig(Key.STORAGE);
|
||||
if (config == null) {
|
||||
config = new Config();
|
||||
config.setKey(Key.STORAGE);
|
||||
}
|
||||
config.setSetting(storageSetting);
|
||||
save(config);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public Config getConfig(Key key) {
|
||||
return find(new Criterion[]{Restrictions.eq("key", key)});
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public MailSetting getMailSetting() {
|
||||
Config config = getConfig(Key.STORAGE);
|
||||
if (config != null) {
|
||||
MailSetting mailSetting = (MailSetting) config.getSetting();
|
||||
return mailSetting;
|
||||
} else {
|
||||
throw new RuntimeException("Unable to find mail setting record.");
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void saveMailSetting(MailSetting mailSetting) {
|
||||
Config config = getConfig(Key.STORAGE);
|
||||
if (config == null) {
|
||||
config = new Config();
|
||||
config.setKey(Key.STORAGE);
|
||||
}
|
||||
config.setSetting(mailSetting);
|
||||
save(config);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,101 @@
|
||||
package com.pmease.gitop.core.manager.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.hibernate.criterion.Order;
|
||||
|
||||
import com.pmease.commons.persistence.Transactional;
|
||||
import com.pmease.gitop.core.ManualConfig;
|
||||
import com.pmease.gitop.core.Skippable;
|
||||
import com.pmease.gitop.core.manager.ConfigManager;
|
||||
import com.pmease.gitop.core.manager.InitManager;
|
||||
import com.pmease.gitop.core.manager.UserManager;
|
||||
import com.pmease.gitop.core.model.Config;
|
||||
import com.pmease.gitop.core.model.Config.Key;
|
||||
import com.pmease.gitop.core.model.User;
|
||||
import com.pmease.gitop.core.setting.MailSetting;
|
||||
import com.pmease.gitop.core.setting.StorageSetting;
|
||||
|
||||
@Singleton
|
||||
public class DefaultInitManager implements InitManager {
|
||||
|
||||
private final UserManager userManager;
|
||||
|
||||
private final ConfigManager configManager;
|
||||
|
||||
@Inject
|
||||
public DefaultInitManager(UserManager userManager, ConfigManager configManager) {
|
||||
this.userManager = userManager;
|
||||
this.configManager = configManager;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public List<ManualConfig> init() {
|
||||
List<ManualConfig> manualConfigs = new ArrayList<ManualConfig>();
|
||||
User rootUser = userManager.find(null, new Order[]{Order.asc("id")});
|
||||
if (rootUser == null) {
|
||||
manualConfigs.add(new ManualConfig(new User()) {
|
||||
|
||||
@Override
|
||||
public Skippable getSkippable() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete() {
|
||||
userManager.save((User) getSetting());
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
Config storageConfig = configManager.getConfig(Key.STORAGE);
|
||||
if (storageConfig == null || storageConfig.getSetting() == null) {
|
||||
manualConfigs.add(new ManualConfig(new StorageSetting()) {
|
||||
|
||||
@Override
|
||||
public Skippable getSkippable() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete() {
|
||||
configManager.saveStorageSetting((StorageSetting) getSetting());
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
Config mailConfig = configManager.getConfig(Key.MAIL);
|
||||
if (mailConfig == null) {
|
||||
manualConfigs.add(new ManualConfig(new MailSetting()) {
|
||||
|
||||
@Override
|
||||
public Skippable getSkippable() {
|
||||
return new Skippable() {
|
||||
|
||||
@Override
|
||||
public void skip() {
|
||||
configManager.saveMailSetting(null);
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete() {
|
||||
configManager.saveMailSetting((MailSetting) getSetting());
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
return manualConfigs;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,11 +1,8 @@
|
||||
package com.pmease.gitop.core.manager.impl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.hibernate.Session;
|
||||
|
||||
import com.pmease.commons.persistence.dao.DefaultGenericDao;
|
||||
import com.pmease.commons.persistence.dao.GeneralDao;
|
||||
import com.pmease.gitop.core.manager.MergeRequestManager;
|
||||
@ -15,8 +12,8 @@ import com.pmease.gitop.core.model.MergeRequest;
|
||||
public class DefaultMergeRequestManager extends DefaultGenericDao<MergeRequest> implements MergeRequestManager {
|
||||
|
||||
@Inject
|
||||
public DefaultMergeRequestManager(GeneralDao generalDao, Provider<Session> sessionProvider) {
|
||||
super(generalDao, sessionProvider);
|
||||
public DefaultMergeRequestManager(GeneralDao generalDao) {
|
||||
super(generalDao);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,11 +1,8 @@
|
||||
package com.pmease.gitop.core.manager.impl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.hibernate.Session;
|
||||
|
||||
import com.pmease.commons.persistence.dao.DefaultGenericDao;
|
||||
import com.pmease.commons.persistence.dao.GeneralDao;
|
||||
import com.pmease.gitop.core.manager.MergeRequestUpdateManager;
|
||||
@ -16,8 +13,8 @@ public class DefaultMergeRequestUpdateManager extends DefaultGenericDao<MergeReq
|
||||
implements MergeRequestUpdateManager {
|
||||
|
||||
@Inject
|
||||
public DefaultMergeRequestUpdateManager(GeneralDao generalDao, Provider<Session> sessionProvider) {
|
||||
super(generalDao, sessionProvider);
|
||||
public DefaultMergeRequestUpdateManager(GeneralDao generalDao) {
|
||||
super(generalDao);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -3,11 +3,8 @@ package com.pmease.gitop.core.manager.impl;
|
||||
import java.io.File;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.hibernate.Session;
|
||||
|
||||
import com.pmease.commons.persistence.dao.DefaultGenericDao;
|
||||
import com.pmease.commons.persistence.dao.GeneralDao;
|
||||
import com.pmease.gitop.core.manager.RepositoryManager;
|
||||
@ -17,8 +14,8 @@ import com.pmease.gitop.core.model.Repository;
|
||||
public class DefaultRepositoryManager extends DefaultGenericDao<Repository> implements RepositoryManager {
|
||||
|
||||
@Inject
|
||||
public DefaultRepositoryManager(GeneralDao generalDao, Provider<Session> sessionProvider) {
|
||||
super(generalDao, sessionProvider);
|
||||
public DefaultRepositoryManager(GeneralDao generalDao) {
|
||||
super(generalDao);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -21,7 +21,7 @@ public class DefaultRoleManager extends DefaultGenericDao<Role> implements RoleM
|
||||
|
||||
@Inject
|
||||
public DefaultRoleManager(GeneralDao generalDao, Provider<Session> sessionProvider) {
|
||||
super(generalDao, sessionProvider);
|
||||
super(generalDao);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
|
||||
@ -3,10 +3,8 @@ package com.pmease.gitop.core.manager.impl;
|
||||
import java.util.Collection;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.criterion.Criterion;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
|
||||
@ -23,8 +21,8 @@ import com.pmease.gitop.core.model.User;
|
||||
public class DefaultTeamManager extends DefaultGenericDao<Team> implements TeamManager {
|
||||
|
||||
@Inject
|
||||
public DefaultTeamManager(GeneralDao generalDao, Provider<Session> sessionProvider) {
|
||||
super(generalDao, sessionProvider);
|
||||
public DefaultTeamManager(GeneralDao generalDao) {
|
||||
super(generalDao);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
|
||||
@ -1,11 +1,8 @@
|
||||
package com.pmease.gitop.core.manager.impl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.criterion.Criterion;
|
||||
import org.hibernate.criterion.Order;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
@ -22,24 +19,24 @@ import com.pmease.gitop.core.model.User;
|
||||
@Singleton
|
||||
public class DefaultUserManager extends DefaultGenericDao<User> implements UserManager {
|
||||
|
||||
private volatile User rootUser;
|
||||
private volatile Long rootUserId;
|
||||
|
||||
@Inject
|
||||
public DefaultUserManager(GeneralDao generalDao, Provider<Session> sessionProvider) {
|
||||
super(generalDao, sessionProvider);
|
||||
public DefaultUserManager(GeneralDao generalDao) {
|
||||
super(generalDao);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public User getRootUser() {
|
||||
if (rootUser == null) {
|
||||
Criteria criteria = getSession().createCriteria(User.class).addOrder(Order.asc("id"));
|
||||
|
||||
/* the first created user should be root user */
|
||||
criteria.setFirstResult(0);
|
||||
criteria.setMaxResults(1);
|
||||
rootUser = (User) criteria.uniqueResult();
|
||||
User rootUser;
|
||||
if (rootUserId == null) {
|
||||
// The first created user should be root user
|
||||
rootUser = find(null, new Order[]{Order.asc("id")});
|
||||
Preconditions.checkNotNull(rootUser);
|
||||
rootUserId = rootUser.getId();
|
||||
} else {
|
||||
rootUser = load(rootUserId);
|
||||
}
|
||||
return rootUser;
|
||||
}
|
||||
|
||||
@ -1,9 +1,7 @@
|
||||
package com.pmease.gitop.core.manager.impl;
|
||||
|
||||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.criterion.Criterion;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
|
||||
@ -12,14 +10,14 @@ import com.pmease.commons.persistence.dao.DefaultGenericDao;
|
||||
import com.pmease.commons.persistence.dao.GeneralDao;
|
||||
import com.pmease.gitop.core.manager.VoteInvitationManager;
|
||||
import com.pmease.gitop.core.model.MergeRequest;
|
||||
import com.pmease.gitop.core.model.VoteInvitation;
|
||||
import com.pmease.gitop.core.model.User;
|
||||
import com.pmease.gitop.core.model.VoteInvitation;
|
||||
|
||||
@Singleton
|
||||
public class DefaultVoteInvitationManager extends DefaultGenericDao<VoteInvitation> implements VoteInvitationManager {
|
||||
|
||||
public DefaultVoteInvitationManager(GeneralDao generalDao, Provider<Session> sessionProvider) {
|
||||
super(generalDao, sessionProvider);
|
||||
public DefaultVoteInvitationManager(GeneralDao generalDao) {
|
||||
super(generalDao);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
|
||||
@ -1,9 +1,7 @@
|
||||
package com.pmease.gitop.core.manager.impl;
|
||||
|
||||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.criterion.Criterion;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
|
||||
@ -18,8 +16,8 @@ import com.pmease.gitop.core.model.Vote;
|
||||
@Singleton
|
||||
public class DefaultVoteManager extends DefaultGenericDao<Vote> implements VoteManager {
|
||||
|
||||
public DefaultVoteManager(GeneralDao generalDao, Provider<Session> sessionProvider) {
|
||||
super(generalDao, sessionProvider);
|
||||
public DefaultVoteManager(GeneralDao generalDao) {
|
||||
super(generalDao);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
package com.pmease.gitop.core.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
|
||||
import com.pmease.commons.persistence.AbstractEntity;
|
||||
|
||||
/**
|
||||
* This entity stores object in serialized form, with one entity
|
||||
* representing one object.
|
||||
*
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
@Entity
|
||||
public class Config extends AbstractEntity {
|
||||
|
||||
public enum Key {STORAGE, MAIL};
|
||||
|
||||
@Column(nullable=false, unique=true)
|
||||
private Key key;
|
||||
|
||||
/*
|
||||
* This field is allowed to be null to indicate particular setting is not
|
||||
* available (the record will always be available after interactive setup
|
||||
* to indicate that the setting has been prompted (although the user may
|
||||
* skipped the setting), so we can not use existence of record to indicate
|
||||
* a null setting.
|
||||
*/
|
||||
private Serializable setting;
|
||||
|
||||
public Key getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public void setKey(Key key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public Serializable getSetting() {
|
||||
return setting;
|
||||
}
|
||||
|
||||
public void setSetting(Serializable setting) {
|
||||
this.setting = setting;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
package com.pmease.gitop.core;
|
||||
package com.pmease.gitop.core.permission;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@ -17,7 +17,6 @@ import com.pmease.gitop.core.manager.UserManager;
|
||||
import com.pmease.gitop.core.model.RoleMembership;
|
||||
import com.pmease.gitop.core.model.TeamMembership;
|
||||
import com.pmease.gitop.core.model.User;
|
||||
import com.pmease.gitop.core.permission.ObjectPermission;
|
||||
|
||||
@Singleton
|
||||
public class UserRealm extends AbstractRealm<User> {
|
||||
@ -0,0 +1,58 @@
|
||||
package com.pmease.gitop.core.setting;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class MailSetting implements Serializable {
|
||||
|
||||
private String smtpHost;
|
||||
|
||||
private int smtpPort = 25;
|
||||
|
||||
private String smtpUser;
|
||||
|
||||
private String smtpPassword;
|
||||
|
||||
private String senderAddress;
|
||||
|
||||
public String getSmtpHost() {
|
||||
return smtpHost;
|
||||
}
|
||||
|
||||
public void setSmtpHost(String smtpHost) {
|
||||
this.smtpHost = smtpHost;
|
||||
}
|
||||
|
||||
public int getSmtpPort() {
|
||||
return smtpPort;
|
||||
}
|
||||
|
||||
public void setSmtpPort(int smtpPort) {
|
||||
this.smtpPort = smtpPort;
|
||||
}
|
||||
|
||||
public String getSmtpUser() {
|
||||
return smtpUser;
|
||||
}
|
||||
|
||||
public void setSmtpUser(String smtpUser) {
|
||||
this.smtpUser = smtpUser;
|
||||
}
|
||||
|
||||
public String getSmtpPassword() {
|
||||
return smtpPassword;
|
||||
}
|
||||
|
||||
public void setSmtpPassword(String smtpPassword) {
|
||||
this.smtpPassword = smtpPassword;
|
||||
}
|
||||
|
||||
public String getSenderAddress() {
|
||||
return senderAddress;
|
||||
}
|
||||
|
||||
public void setSenderAddress(String senderAddress) {
|
||||
this.senderAddress = senderAddress;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
package com.pmease.gitop.core.setting;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class StorageSetting implements Serializable {
|
||||
|
||||
private String repoStorageDir;
|
||||
|
||||
public String getRepoStorageDir() {
|
||||
return repoStorageDir;
|
||||
}
|
||||
|
||||
public void setRepoStorageDir(String repoStorageDir) {
|
||||
this.repoStorageDir = repoStorageDir;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user