ucCloneGenAltId

Purpose

This can be used to generate the ALT_ID value to store an issue when cloning an issue.

Applies To

Edit screen buttons

Signature

public HashMap ucCloneGenAltId( 
      ProblemFormParam values,    // contains values of form params
      FormParameters fp,          // contains values of form params
      HashMap msg,                // contains msg that goes into COMMENTS field
      Connection con,             // the database connection
      SesameSession session)  	  // the session object

Notes

It can also be used to manipulate the cloning message that goes into the inbuilt COMMENTS field. For example, if you want to insert a message that is different from the standard “Issue # xxxxx cloned from Issue # yyyyy”, then use this method to overwrite the value for the COMMENTS parameter.

Example

This method shows how a cloning message can be changed from the standard. Instead, it overwrites the value for the comments parameter, and returns the modified message.

public HashMap ucCloneGenAltId( 
      ProblemFormParam values,    // contains values of form params
      FormParameters fp,          // contains values of form params
      HashMap msg,                // contains msg that goes into COMMENTS field
      Connection con,             // the database connection
      SesameSession session) throws Exception  // the session object
{
    String project_prefix = null;
    String area = null;
    String project = null;
    String new_alt_id = null;
    ProblemFormParam npfp = (ProblemFormParam) session.getAttribute("CLONEE_PFP");
    
    if (npfp == null) {
       project = (String) fp.get("p_project");
    } else {
       project = (String) npfp.get("PROJECT_ID");
    }
    
    int index1 = project.indexOf("|");
    if (index1 > -1) {
    	area = project.substring(0, index1);
        project = project.substring(index1 + 1, project.length());
    }

    // Get current issue's ALT_ID
    String alt_id = (String) values.get("ALT_ID");
    if (alt_id == null) {
    	Problem p = Problem.getReference(con, (String) values.get("ID"));
        alt_id = p.getAltId();
    }
    
    if (area == null) { area = "AREA"; }
    if (project == null) { project = "PROJECT"; }
    
    project_prefix = area + "_" + project;
    
    String preAltId = null;
    String seq = (String) values.get("ID");

    int len = seq.length();
    // fill with preceeding zeros if length is less than 5 digits
    while (len < 5) {
        seq = "0" + seq;
        len++;
    }
    
    preAltId = project_prefix + seq;
    new_alt_id = preAltId;

    msg.put("alt_id", new_alt_id);

    String attr = Z.appDefaults.getAttribute("ITEM_ID_DISPLAY");
    attr = attr.trim().toUpperCase();
    
    if (attr.equals("ALT_ID"))
    {
    	String idTitle = Z.dictionary.getTitle(con, "ALT_ID");
        String problemTitle = Z.dictionary.getTitle(con, "PROBLEM");
        SesameMessageFormat smf = new SesameMessageFormat(con, session);
        smf.clear();
        smf.append("This ");                   
        smf.appendString(problemTitle);
        // put in original problem#
        smf.append(" ");
        smf.appendString(alt_id);
        smf.append(" has been cloned. The new ");
        smf.appendString(idTitle);
        smf.append(" is ");
        smf.appendString(new_alt_id);
        smf.append("\n");
        smf.append("\n");
        
        String s = smf.getFormattedMessage();
        msg.put("cloned_msg", s);
    }
    
    return msg;
}