как использовать методы или выполнять инструкции в классе - PullRequest
0 голосов
/ 10 октября 2019

Я не знаю, нужно ли мне еще кофе, или моя голова устала, но я чувствую себя идиотом:)

что я делаю не так ???

Яхочу вызвать методы в классе, но я получаю ошибки компиляции.

Compilation failure: Compilation failure:
java:[35,1] error: illegal start of type
java:[35,21] error: <identifier> expected
java:[35,22] error: ';' expected

Я не могу выполнить этот блок в классе

//this is what doesn't work         
    if (custkey.contains(",")) {
        String[] ck = custkey.split(",");
        for ( String k : ck) {
            this.loadRefDb(k);
        } else {
            this.loadRefDb(custkey);
        }
    }

мой класс

package com.ge.digital.fleet.dataservice.impl.processor;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import java.sql.*;

import com.ge.digital.fleet.dataservice.impl.db.RefDatabase;

public class RefReplicatedDataProcessor {

    private static final Logger log = LoggerFactory.getLogger(RefReplicatedDataProcessor.class);

    private RefDatabase refDb = null;
    private DataSource dataSource;
    private String custkey;

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }
    public void setCustkey(String custkey) {
        this.custkey = custkey;
    }
    public void setRefDatabase(RefDatabase refDb) {
        this.refDb = refDb;
    }
//this is what doesn't work         
    if (custkey.contains(",")) {
        String[] ck = custkey.split(",");
        for ( String k : ck) {
            this.loadRefDb(k);
        } else {
            this.loadRefDb(custkey);
        }
    }

    public void loadRefDb(String custkey) throws SQLException {

        log.info("Reference Replicated Data Processor :: start");

        refDb.dropDb();
        setAssociations(custkey);
        refDb.replicationComplete();

        log.info("Reference Replicated Data Processor :: Finish");

      }

    /***
     * name: setAssociations(custkey) 
     * Loads/Builds the cache database with values found in mysql database
     * 
     * returns a List of associations
     * G1.DWATT,112-A-001_Gas_Turbine
     * G1.ATID,112-A-001_Gas_Turbine
     * G1.dvar, 112-A-001_Gas_Turbine
     * ...
     */
    public void setAssociations(String custkey) throws SQLException {

        String reference = "";
        String asset = "";
        String dbname = "iprcmt1.fleet_associations";  //from old impl database - TODO new database impl

        String query = "select reference, asset from " + dbname + " where custkey = ?";
        try (Connection conn = dataSource.getConnection();
            PreparedStatement stmt = conn.prepareStatement(query)) {
            stmt.setString(1, custkey);
            try (ResultSet rs  = stmt.executeQuery()) {
                if (! rs.next() ) {  
                    log.info("SQL Warning ! No associations for key: " + custkey);
                } else {
                    do { 
                        reference = rs.getString(1);
                        asset = rs.getString(2);
                        log.info("SQL Associations reference: " + reference + " and asset: " + asset);
                        refDb.addRow(reference, asset);
                    } while (rs.next());
                }
            } catch (Exception ex) {
                log.error("SQL Cannot Execute ResultSet Query!");
                log.error(ex.getMessage());
            }
        } catch (Exception e) {
            log.error("SQL Cannot Create DataSource Connection! Cannot Create Prepared Statement!");
            log.error(e.getMessage());
        }
    }

}

Ответы [ 3 ]

2 голосов
/ 10 октября 2019

может это? :)

if (custkey.contains(",")) {
    String[] ck = custkey.split(",");
    for ( String k : ck) {
        this.loadRefDb(k);
    } 
}else {
    this.loadRefDb(custkey);
}
1 голос
/ 10 октября 2019

Ваш код просто неуместен. Код в «// это то, что не работает» должен быть внутри метода или конструктора.

public RefReplicatedDataProcessor(){
    //this is what didn't work         
    if (custkey.contains(",")) {
        String[] ck = custkey.split(",");
        for ( String k : ck) {
            this.loadRefDb(k);
        }
    } else {
        this.loadRefDb(custkey);
    }
}
1 голос
/ 10 октября 2019

Возможно, вам следует выполнить разбиение в методе

public void filter(){
    if (custkey.contains(",")) {
        String[] ck = custkey.split(",");
        for ( String k : ck) {
            this.loadRefDb(k);
        } else {
            this.loadRefDb(custkey);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...