Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How can I save list data in issue using custom field?

Vishal Petkar November 29, 2020

I am a beginner with Jira custom fields

Created a demo plugin on the local server, 

added a custom field module in that to store a BigDecimal

Now I want to add a list of data in the custom field

The class I have implemented 

package com.intel.cfdemo.jira.customfields;

import com.atlassian.jira.issue.customfields.impl.AbstractSingleFieldType;
import com.atlassian.jira.issue.customfields.persistence.PersistenceFieldType;
import com.atlassian.plugin.servlet.util.DefaultPathMapper;
import com.atlassian.plugin.spring.scanner.annotation.component.Scanned;
import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import com.atlassian.plugin.spring.scanner.annotation.imports.JiraImport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.atlassian.jira.issue.customfields.impl.TextCFType;
import com.atlassian.jira.issue.customfields.manager.GenericConfigManager;
import com.atlassian.jira.issue.customfields.persistence.CustomFieldValuePersister;
import com.atlassian.jira.issue.customfields.impl.FieldValidationException;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.fields.config.FieldConfig;
import com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem;

import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

@Scanned
public class MyCustomField extends AbstractSingleFieldType<BigDecimal> {

@Inject
public MyCustomField(
@JiraImport CustomFieldValuePersister customFieldValuePersister,
@JiraImport GenericConfigManager genericConfigManager
) {
super(customFieldValuePersister, genericConfigManager);
}

@Override
public String getStringFromSingularObject(final BigDecimal singularObject) {
System.out.println("getStringFromSingularObject 1");
System.out.println(singularObject);
if (singularObject == null)
return null;
else
return singularObject.toString();
}

@Override
public BigDecimal getSingularObjectFromString(final String string) throws FieldValidationException {
System.out.println("getSingularObjectFromString 4");
System.out.println(string);
if (string == null)
return null;
try {
BigDecimal decimal = new BigDecimal(string);
if (decimal.scale() > 2) {
throw new FieldValidationException(
"Maximum of 2 decimal places are allowed.");
}
return decimal.setScale(2);
} catch (NumberFormatException ex) {
throw new FieldValidationException("Not a valid number.");
}
}

@Override
protected PersistenceFieldType getDatabaseType() {
System.out.println("getDatabaseType 2");
System.out.println(PersistenceFieldType.TYPE_LIMITED_TEXT);
return PersistenceFieldType.TYPE_LIMITED_TEXT;
}

@Override
protected BigDecimal getObjectFromDbValue(final Object databaseValue)
throws FieldValidationException {
System.out.println("getObjectFromDbValue 3");
System.out.println(databaseValue);
return getSingularObjectFromString((String) databaseValue);
}

@Override
protected Object getDbValueFromObject(final BigDecimal customFieldObject) {
System.out.println("getDbValueFromObject 5");
System.out.println(customFieldObject);
return getStringFromSingularObject(customFieldObject);
}
}

 

0 answers

Suggest an answer

Log in or Sign up to answer