Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

refactoring mandatory map.get java code

Tags:

java

Please, any ideas on how to refactor this java code so I don't have to repeat those code blocks 3 (or more) times?

Integer id = null;
try {
    id = (Integer)extradata.get("id");
}
catch(Exception e) {
    logger.error(e);
}

if (id == null) {
    logger.error("no id set");
    task.setStatus(Status.ERROR);
    DBService.updateTaskStatus(conn, false, task);
    conn.commit();
    return;
}

String name = null;
try {
    name = (String)extradata.get("name");
}
catch(Exception e) {
    logger.error(e);
}

if (name == null) {
    logger.error("no name set");
    task.setStatus(Status.ERROR);
    DBService.updateTaskStatus(conn, false, task);
    conn.commit();
    return;
}

String city = null;
try {
    city = (String)extradata.get("city");
}
catch(Exception e) {
    logger.error(e);
}

if (city == null) {
    logger.error("no city set");
    task.setStatus(Status.ERROR);
    DBService.updateTaskStatus(conn, false, task);
    conn.commit();
    return;
}
like image 875
Lem0n Avatar asked Jun 28 '26 19:06

Lem0n


2 Answers

You can use a static generic method:

private static final <T> T getValue(Map<String, Object> extradata, String key, Class<T> clazz) {
    Object val = extradata.get(key);
    if (val == null) {
        handleNullVariable("name");
        return null;
    }        
    return clazz.cast(val);
}

Then you can call it with:

Integer id = getValue(extradata, "id", Integer.class);
String name = getValue(extradata, "name", String.class);
like image 193
rolfl Avatar answered Jul 01 '26 09:07

rolfl


Integer id = null;
String name = null;
String city = null;

try {
    id = (Integer)extradata.get("id");
    name = (String)extradata.get("name");
    city = (String)extradata.get("city");
catch(Exception e) {
    logger.error(e);
}

if (id == null || name == null || city == null) {
    String msg = (id == null ? "id" : name == null ? "name" : "city");
    logger.error("no "+msg+" set");
    task.setStatus(Status.ERROR);
    DBService.updateTaskStatus(conn, false, task);
    conn.commit();
    return;
}
like image 28
Nir Alfasi Avatar answered Jul 01 '26 08:07

Nir Alfasi