001/** 002 * Copyright (c) 2012, 2015, Credit Suisse (Anatole Tresch), Werner Keil and others by the @author tag. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 005 * use this file except in compliance with the License. You may obtain a copy of 006 * the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 013 * License for the specific language governing permissions and limitations under 014 * the License. 015 */ 016package org.javamoney.moneta.internal.loader; 017 018import java.util.Map; 019import java.util.Objects; 020import java.util.logging.Level; 021import java.util.logging.Logger; 022 023public class LoadDataLoaderService { 024 025 private static final Logger LOG = Logger.getLogger(DefaultLoaderListener.class.getName()); 026 027 private final DefaultLoaderListener listener; 028 029 LoadDataLoaderService(DefaultLoaderListener listener) { 030 this.listener = listener; 031 } 032 033 public boolean execute(String resourceId, 034 Map<String, LoadableResource> resources) { 035 036 LoadableResource load = resources.get(resourceId); 037 if (Objects.nonNull(load)) { 038 try { 039 if (load.load()) { 040 listener.trigger(resourceId, load.getDataStream()); 041 return true; 042 } 043 } catch (Exception e) { 044 LOG.log(Level.SEVERE, "Failed to load resource: " + resourceId, 045 e); 046 } 047 } else { 048 throw new IllegalArgumentException("No such resource: " 049 + resourceId); 050 } 051 return false; 052 } 053 054 @Override 055 public String toString() { 056 return LoadDataLoaderService.class.getName() + '{' + " listener: " + listener + '}'; 057 } 058 059}