package fr.adrienbrault.idea.symfony2plugin.intentions.yaml.dict;
import com.intellij.openapi.editor.Document;
import com.intellij.psi.PsiDocumentManager;
import fr.adrienbrault.idea.symfony2plugin.action.ServiceActionUtil;
import fr.adrienbrault.idea.symfony2plugin.util.yaml.YamlHelper;
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.yaml.psi.YAMLKeyValue;
import java.util.ArrayList;
import java.util.List;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class YamlCreateServiceArgumentsCallback implements ServiceActionUtil.InsertServicesCallback {
@NotNull
private final YAMLKeyValue serviceKeyValue;
public YamlCreateServiceArgumentsCallback(@NotNull final YAMLKeyValue serviceKeyValue) {
this.serviceKeyValue = serviceKeyValue;
}
@Override
public void insert(List<String> items) {
PsiDocumentManager manager = PsiDocumentManager.getInstance(serviceKeyValue.getProject());
Document document = manager.getDocument(serviceKeyValue.getContainingFile());
if (document == null) {
return;
}
List<String> arrayList = new ArrayList<>();
for (String item : items) {
arrayList.add("'@" + (StringUtils.isNotBlank(item) ? item : "?") + "'");
}
YamlHelper.putKeyValue(serviceKeyValue, "arguments", "[" + StringUtils.join(arrayList, ", ") + "]");
manager.doPostponedOperationsAndUnblockDocument(document);
manager.commitDocument(document);
}
}