class ReportMgmtService {

    /**
     * Logger.
     */
    private static final Logger LOGGER = LogManager.getLogger(ReportMgmtService.class);

    /**
     * Report repository.
     */
    @Inject
    private ReportRepository reportRepository;

    /**
     * Language service.
     */
    @Inject
    private LangPropsService langPropsService;

    /**
     * Pointtransfer management service.
     */
    @Inject
    private PointtransferMgmtService pointtransferMgmtService;

    /**
     * Notification management service.
     */
    @Inject
    private NotificationMgmtService notificationMgmtService;

    /**
     * Makes the specified report as ignored.
     *
     * @param reportId the specified report id
     */
    @Transactional
    public void makeReportIgnored(final String reportId) {
        try {
            final JSONObject report = reportRepository.get(reportId);
            report.put(Report.REPORT_HANDLED, Report.REPORT_HANDLED_C_IGNORED);

            reportRepository.update(reportId, report);
        } catch (final Exception e) {
            LOGGER.log(Level.ERROR, "Makes report [id=" + reportId + "] as ignored failed", e);
        }
    }

    /**
     * Makes the specified report as handled.
     *
     * @param reportId the specified report id
     */
    public void makeReportHandled(final String reportId) {<FILL_FUNCTION_BODY>}

    /**
     * Adds a report.
     *
     * @param report the specified report, for example,
     *               {
     *               "reportUserId": "",
     *               "reportDataId": "",
     *               "reportDataType": int,
     *               "reportType": int,
     *               "reportMemo": ""
     *               }
     * @throws ServiceException service exception
     */
    @Transactional
    public void addReport(final JSONObject report) throws ServiceException {
        report.put(Report.REPORT_HANDLED, Report.REPORT_HANDLED_C_NOT);

        try {
            reportRepository.add(report);
        } catch (final Exception e) {
            LOGGER.log(Level.ERROR, "Adds a report failed", e);

            throw new ServiceException(langPropsService.get("systemErrLabel"));
        }
    }
}

        final Transaction transaction = reportRepository.beginTransaction();
        try {
            final JSONObject report = reportRepository.get(reportId);
            report.put(Report.REPORT_HANDLED, Report.REPORT_HANDLED_C_YES);

            reportRepository.update(reportId, report);
            transaction.commit();

            final String reporterId = report.optString(Report.REPORT_USER_ID);
            final String transferId = pointtransferMgmtService.transfer(Pointtransfer.ID_C_SYS, reporterId,
                    Pointtransfer.TRANSFER_TYPE_C_REPORT_HANDLED, Pointtransfer.TRANSFER_SUM_C_REPORT_HANDLED, reportId, System.currentTimeMillis(), "");

            final JSONObject notification = new JSONObject();
            notification.put(Notification.NOTIFICATION_USER_ID, reporterId);
            notification.put(Notification.NOTIFICATION_DATA_ID, transferId);
            notificationMgmtService.addReportHandledNotification(notification);
        } catch (final Exception e) {
            if (transaction.isActive()) {
                transaction.rollback();
            }

            LOGGER.log(Level.ERROR, "Makes report [id=" + reportId + "] as handled failed", e);
        }
    
<no_super_class>