"item_id="       + wi.getItem().getID()       + "collection_id=" + wi.getCollection().getID() + "eperson_id="    + wi.getOwner().getID()      + "old_state="     + taskstate                  + "new_state="     + wi.getState()
",item_id="       + wi.getItem().getID()       + ",collection_id=" + wi.getCollection().getID() + ",old_state="     + taskstate                  + ",new_state="     + wi.getState()
    public static void advance(Context c,WorkflowItem wi, EPerson e)        throws SQLException, IOException, AuthorizeException    {        int taskstate = wi.getState();        switch (taskstate)        {            case WFSTATE_STEP1:                // authorize DSpaceActions.SUBMIT_REVIEW                // Record provenance                recordApproval(c, wi, e);                doState(c, wi, WFSTATE_STEP2POOL, e);                break;            case WFSTATE_STEP2:                // authorize DSpaceActions.SUBMIT_STEP2                // Record provenance                recordApproval(c, wi, e);                doState(c, wi, WFSTATE_STEP3POOL, e);                break;            case WFSTATE_STEP3:                // authorize DSpaceActions.SUBMIT_STEP3                // We don't record approval for editors, since they can't reject,                // and thus didn't actually make a decision                doState(c, wi, WFSTATE_ARCHIVE, e);                break;                // error handling?  shouldn't get here        }        log.info(LogManager.getHeader(c,                    "advance_workflow",                    "workflow_item_id="  + wi.getID()                 +                        "item_id="       + wi.getItem().getID()       +                        "collection_id=" + wi.getCollection().getID() +                        "eperson_id="    + wi.getOwner().getID()      +                        "old_state="     + taskstate                  +                        "new_state="     + wi.getState()                        )                );    }