Java tutorial
/* * Copyright 2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.baidu.cc.configuration.service.impl; import com.baidu.bjf.dao.SqlMapDao; import com.baidu.bjf.service.GenericSqlMapServiceImpl; import com.baidu.cc.configuration.bo.ConfigItem; import com.baidu.cc.configuration.dao.ConfigItemDao; import com.baidu.cc.configuration.dao.ConfigItemMapper; import com.baidu.cc.configuration.service.ConfigItemService; import java.io.StringReader; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; import javax.annotation.Resource; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.commons.lang.math.NumberUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * Service implement class for model : * com.baidu.cc.configuration.bo.ConfigItemBase * * @author BJF */ @Service("configItemService") public class ConfigItemServiceImpl extends GenericSqlMapServiceImpl<ConfigItem, Long> implements ConfigItemService { /** * Dao 'configItemDao' reference. */ @Resource(name = "configItemDao") private ConfigItemDao configItemDao; /** configItemMapper. */ @Autowired private ConfigItemMapper configItemMapper; /* * (non-Javadoc) * * @see com.baidu.bjf.service.GenericSqlMapServiceImpl#getDao() */ @Override public SqlMapDao<ConfigItem, Long> getDao() { return configItemDao; } /** * find {@link ConfigItem} list by related version id. * * @param id * version id * @param resolveReference * if resolve reference value. * @return {@link ConfigItem} list */ public List<ConfigItem> findByVersionId(Long id, boolean resolveReference) { List<ConfigItem> ret; ret = configItemMapper.findByVersionId(id); if (!resolveReference) { return ret; } for (ConfigItem configItem : ret) { if (configItem.isRef()) { ConfigItem refItem = configItemDao.findById(NumberUtils.toLong(configItem.getVal())); if (refItem != null) { configItem.setVal(refItem.getVal()); configItem.setResolved(true); } } } return ret; } /** * find {@link ConfigItem} by version id and name. * * @param versionId * version id * @param name * configuration item name to filter * @param resolveReference * if resolve reference value. * @return {@link ConfigItem} */ public ConfigItem findByVersionIdAndName(Long versionId, String name, boolean resolveReference) { Map<String, Object> param = new HashMap<String, Object>(); param.put("versionId", versionId); param.put("name", name); ConfigItem ret = configItemMapper.findByVersionIdAndName(param); if (ret == null) { return null; } if (!resolveReference) { return ret; } if (ret.isRef()) { ConfigItem refItem = configItemDao.findById(NumberUtils.toLong(ret.getVal())); if (refItem != null) { ret.setVal(refItem.getVal()); ret.setResolved(true); } } return ret; } /* * (non-Javadoc) * * @see * com.baidu.cc.configuration.service.ConfigItemService#findByGroupId(java * .lang.Long, boolean) */ @Override public List<ConfigItem> findByGroupId(Long groupId, boolean resolveReference) { return configItemMapper.findByGroupId(groupId); } /** * ????CRUD. * * @param insertConfigItemList * insert * @param updateConfigItemList * update * @param delConfigItemIds * ID * @return true/false */ @Override public boolean saveConfigItems(List<ConfigItem> insertConfigItemList, List<ConfigItem> updateConfigItemList, List<Long> delConfigItemIds) { if (CollectionUtils.isNotEmpty(delConfigItemIds)) { configItemDao.deleteBatch(delConfigItemIds.toArray(new Long[] {})); } if (CollectionUtils.isNotEmpty(insertConfigItemList)) { super.saveOrUpdateAll(insertConfigItemList); } if (CollectionUtils.isNotEmpty(updateConfigItemList)) { super.saveOrUpdateAll(updateConfigItemList); } return true; } /** * ?configGroupIdsconfigItemIds. * * @param configGroupIds * configGroupIds * @return List<Long> */ @Override public List<Long> findConfigItemIdsByConfigGroupIds(List<Long> configGroupIds) { if (CollectionUtils.isEmpty(configGroupIds)) { return null; } List<Long> configItemIdsByConfigGroupIds = configItemMapper .findConfigItemIdsByConfigGroupIds(configGroupIds); return configItemIdsByConfigGroupIds; } /** * properties??. * * @param groupId * ?groupId * @param versionId * ?versionId * @param content * properties */ @Override public void batchInsertConfigItems(Long groupId, Long versionId, String content) { PropertiesConfiguration propertiesConfiguration = new PropertiesConfiguration(); Properties properties = new Properties(); try { propertiesConfiguration.load(new StringReader(content)); properties.load(new StringReader(content)); Date now = new Date(); Iterator<String> keys = propertiesConfiguration.getKeys(); List<ConfigItem> configItems = new ArrayList<ConfigItem>(); while (keys.hasNext()) { String key = keys.next(); String value = properties.getProperty(key); ConfigItem configItem = new ConfigItem(); configItem.setName(key); configItem.setVal(value); configItem.setCreateTime(now); configItem.setUpdateTime(now); configItem.setGroupId(groupId); configItem.setVersionId(versionId); configItem.setShareable(false); configItem.setRef(false); configItems.add(configItem); } configItemDao.deleteByGroupId(groupId); saveOrUpdateAll(configItems); } catch (Exception e) { throw new RuntimeException(e); } } }