package name.abuchen.portfolio.ui; import java.io.IOException; import java.util.ArrayList; import java.util.List; import name.abuchen.portfolio.model.Client; import name.abuchen.portfolio.model.ConsumerPriceIndex; import name.abuchen.portfolio.online.CPIFeed; import name.abuchen.portfolio.online.DestatisCPIFeed; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.Status; public final class UpdateCPIJob extends AbstractClientJob { public UpdateCPIJob(Client client) { super(client, Messages.JobLabelUpdateCPI); } @Override protected IStatus run(IProgressMonitor monitor) { monitor.beginTask(Messages.JobLabelUpdateCPI, 1); CPIFeed feed = new DestatisCPIFeed(); List<IStatus> errors = new ArrayList<IStatus>(); try { List<ConsumerPriceIndex> prices = feed.getConsumerPriceIndices(); boolean isDirty = getClient().setConsumerPriceIndices(prices); if (isDirty) getClient().markDirty(); } catch (IOException e) { errors.add(new Status(IStatus.ERROR, PortfolioPlugin.PLUGIN_ID, e.getMessage(), e)); } if (!errors.isEmpty()) { PortfolioPlugin.log(new MultiStatus(PortfolioPlugin.PLUGIN_ID, -1, errors.toArray(new IStatus[0]), Messages.JobMsgErrorUpdatingIndices, null)); } return Status.OK_STATUS; } }