package org.fastcatsearch.job.management; import java.io.IOException; import javax.xml.bind.JAXBException; import org.fastcatsearch.common.io.Streamable; import org.fastcatsearch.exception.FastcatSearchException; import org.fastcatsearch.ir.IRService; import org.fastcatsearch.ir.config.JDBCSourceConfig; import org.fastcatsearch.ir.io.DataInput; import org.fastcatsearch.ir.io.DataOutput; import org.fastcatsearch.job.Job; import org.fastcatsearch.service.ServiceManager; import org.fastcatsearch.util.JAXBConfigs; /** * 현 노드의 셋팅파일을 타 노드에 복사할때 사용한다. * */ public class SyncJDBCSettingFileObjectJob extends Job implements Streamable { protected static final long serialVersionUID = -6707105484687769581L; protected Object jaxbConfig; public SyncJDBCSettingFileObjectJob() {} public SyncJDBCSettingFileObjectJob(Object jaxbConfig) { this.jaxbConfig = jaxbConfig; } @Override public void readFrom(DataInput input) throws IOException { try { jaxbConfig = JAXBConfigs.readFrom(input, JDBCSourceConfig.class); } catch (JAXBException e) { throw new IOException(e); } } @Override public void writeTo(DataOutput output) throws IOException { try { JAXBConfigs.writeTo(output, jaxbConfig, JDBCSourceConfig.class); } catch (JAXBException e) { throw new IOException(e); } } @Override public JobResult doRun() throws FastcatSearchException { IRService irService = ServiceManager.getInstance().getService(IRService.class); if(jaxbConfig instanceof JDBCSourceConfig) { try { //셋팅 업데이트 및 저장. irService.updateJDBCSourceConfig((JDBCSourceConfig) jaxbConfig); return new JobResult(true); } catch (JAXBException e) { logger.error("", e); } } return new JobResult(false); } }