backup-idx

public abstract class GenericServiceImpl<T> implements GenericService<T>

{

private final static GyLogger logger = GyLogger.getLogger(GenericServiceImpl.class);

@Autowired

SolrServerService solrServerService;

String coreName = null;

public GenericServiceImpl() {

initCoreName();

}

/**

* It used to obtain current core name

*/

protected abstract void initCoreName();

/**

* @param coreName

*/

protected void setCoreName(String coreName) {

this.coreName = coreName;

}

@Override

public void add(T obj) 

{

try

{

solrServerService.add(coreName, obj);

logger.info("Success to add index ["+obj.toString()+ "] for core "+coreName);

} catch (Exception e) 

{

logger.error("Fail to add index ["+obj.toString()+ "] for core "+coreName+" due to:"+e.toString());

}

}

@Override

public void delete(String id)

{

try 

{

solrServerService.delete(coreName, id);

logger.info("Success to delete index ["+id+ "] for core "+coreName);

catch (Exception e)

{

logger.error("Fail to delete index ["+id+ "] for core "+coreName+" due to:"+e.toString());

}

}

@Override

public void batchAdd(List<T> list) 

{

try 

{

solrServerService.batchAdd(coreName, list);

logger.info("Success to batchAdd index ["+list.size()+ "] for core "+coreName);

catch (Exception e) 

{

logger.error("Fail to batchAdd ["+list.size()+ "] index  for core "+coreName+" due to:"+e.toString());

}

}

@Override

public void batchDelete(List<String> idList) 

{

try 

{

solrServerService.batchDelete(coreName, idList);

logger.info("Success to batchDelete ["+idList.size()+ "] index  for core "+coreName);

catch (Exception e)

{

logger.error("Fail to batchDelete ["+idList.size()+ "]  index for core "+coreName+" due to:"+e.toString());

}

}

@Override

public void batchUpdate(List<IndexUpdate> updateModels)

{

if(updateModels == null || updateModels.isEmpty())

{

return ;

}

List<SolrInputDocument> solrDocs = new ArrayList<SolrInputDocument>();

for(IndexUpdate model: updateModels)

{

SolrInputDocument solrDoc = new SolrInputDocument();

for(Label field:model.getFields())

{

Map<String, Object> map = new HashMap<String, Object>();

map.put(model.getMode().getValue(), field.getValue());

solrDoc.addField(field.getKey(), map);

}

solrDoc.addField("id", model.getId());

solrDocs.add(solrDoc);

}

try 

{

solrServerService.updateValues(coreName, solrDocs);

logger.info("Success to batchUpdate ["+solrDocs.size()+ "] index  for core "+coreName);

catch (Exception e)

{

logger.error("Fail to batchUpdate ["+solrDocs.size()+ "]  index for core "+coreName+" due to:"+e.toString());

}

}

@Override

public void update(IndexUpdate updateModel) 

{

if(updateModel == null)

{

return ;

}

SolrInputDocument solrDoc = new SolrInputDocument();

for(Label field:updateModel.getFields())

{

Map<String, Object> map = new HashMap<String, Object>();

map.put(updateModel.getMode().getValue(), field.getValue());

solrDoc.addField(field.getKey(), map);

}

solrDoc.addField("id", updateModel.getId());

List<SolrInputDocument> solrDocs = new ArrayList<SolrInputDocument>();

solrDocs.add(solrDoc);

try 

{

solrServerService.updateValues(coreName, solrDocs);

logger.info("Success to update ["+solrDoc.toString()+ "] index  for core "+coreName);

catch (Exception e)

{

logger.error("Fail to update ["+solrDoc.toString()+ "]  index for core "+coreName+" due to:"+e.toString());

}

}

}

猜你喜欢

转载自wingoal.iteye.com/blog/2289298