FINERACT-1932: Fineract modularization - fineract-report
This commit is contained in:
committed by
Adam Saghy
parent
a9cda96738
commit
3b603f5e80
-36
@@ -1,36 +0,0 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you 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 org.apache.fineract.infrastructure.report.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.TYPE)
|
||||
@Documented
|
||||
public @interface ReportService {
|
||||
|
||||
/**
|
||||
* @return the type of the report
|
||||
*/
|
||||
String[] type();
|
||||
}
|
||||
-63
@@ -1,63 +0,0 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you 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 org.apache.fineract.infrastructure.report.provider;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.apache.fineract.infrastructure.report.annotation.ReportService;
|
||||
import org.apache.fineract.infrastructure.report.service.ReportingProcessService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Scope("singleton")
|
||||
public class ReportingProcessServiceProvider {
|
||||
|
||||
public static final String SERVICE_MISSING = "There is no ReportingProcessService registered in the ReportingProcessServiceProvider for this report type: ";
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(ReportingProcessServiceProvider.class);
|
||||
|
||||
private final Map<String, ReportingProcessService> reportingProcessServices;
|
||||
|
||||
@Autowired
|
||||
public ReportingProcessServiceProvider(List<ReportingProcessService> reportingProcessServices) {
|
||||
var mapBuilder = ImmutableMap.<String, ReportingProcessService>builder();
|
||||
for (ReportingProcessService s : reportingProcessServices) {
|
||||
String[] reportTypes = s.getClass().getAnnotation(ReportService.class).type();
|
||||
for (String type : reportTypes) {
|
||||
mapBuilder.put(type, s);
|
||||
}
|
||||
LOGGER.info("Registered report service '{}' for type/s '{}'", s, reportTypes);
|
||||
}
|
||||
this.reportingProcessServices = mapBuilder.build();
|
||||
}
|
||||
|
||||
public ReportingProcessService findReportingProcessService(final String reportType) {
|
||||
return reportingProcessServices.getOrDefault(reportType, null);
|
||||
}
|
||||
|
||||
public Collection<String> findAllReportingTypes() {
|
||||
return this.reportingProcessServices.keySet();
|
||||
}
|
||||
}
|
||||
-48
@@ -1,48 +0,0 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you 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 org.apache.fineract.infrastructure.report.service;
|
||||
|
||||
import jakarta.ws.rs.core.MultivaluedMap;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.apache.fineract.infrastructure.security.service.SqlValidator;
|
||||
|
||||
public abstract class AbstractReportingProcessService implements ReportingProcessService {
|
||||
|
||||
private final SqlValidator sqlValidator;
|
||||
|
||||
protected AbstractReportingProcessService(SqlValidator sqlValidator) {
|
||||
this.sqlValidator = sqlValidator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getReportParams(final MultivaluedMap<String, String> queryParams) {
|
||||
final Map<String, String> reportParams = new HashMap<>();
|
||||
for (Map.Entry<String, List<String>> entry : queryParams.entrySet()) {
|
||||
if (entry.getKey().startsWith("R_")) {
|
||||
String pKey = "${" + entry.getKey().substring(2) + "}";
|
||||
String pValue = entry.getValue().get(0);
|
||||
sqlValidator.validate(pValue);
|
||||
reportParams.put(pKey, pValue);
|
||||
}
|
||||
}
|
||||
return reportParams;
|
||||
}
|
||||
}
|
||||
-34
@@ -1,34 +0,0 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you 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 org.apache.fineract.infrastructure.report.service;
|
||||
|
||||
import jakarta.ws.rs.core.MultivaluedMap;
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.apache.fineract.infrastructure.dataqueries.data.ReportExportType;
|
||||
|
||||
public interface ReportingProcessService {
|
||||
|
||||
Response processRequest(String reportName, MultivaluedMap<String, String> queryParams);
|
||||
|
||||
List<ReportExportType> getAvailableExportTargets();
|
||||
|
||||
Map<String, String> getReportParams(MultivaluedMap<String, String> queryParams);
|
||||
}
|
||||
Reference in New Issue
Block a user