我试图创建一个简单的Java脚本,该脚本将连接到Rally,获取所有缺陷,并以Java对象的形式返回包括讨论在内的缺陷详细信息。这里的问题是,由于只给出了URL,因此讨论返回的是我认为是集合的内容。我被困在如何将关于缺陷的讨论作为JSON中的对象返回,而不仅仅是将不得不单独运行的另一个查询返回的原因(我猜成千上万次,因为我们有成千上万个缺陷)。
这是我的代码:
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.rallydev.rest.RallyRestApi;
import com.rallydev.rest.request.GetRequest;
import com.rallydev.rest.request.QueryRequest;
import com.rallydev.rest.request.UpdateRequest;
import com.rallydev.rest.response.QueryResponse;
import com.rallydev.rest.util.Fetch;
import com.rallydev.rest.util.QueryFilter;
import com.rallydev.rest.util.Ref;
import org.json.simple.JSONArray;
public class ExtractData{
public static void main(String[] args) throws URISyntaxException, IOException, NumberFormatException
{
RallyRestApi restApi = new RallyRestApi(new URI("https://rally1.rallydev.com"), "apiKeyHere");
restApi.setProxy(URI.create("http://usernameHere:passwordHere0@proxyHere:8080"));
restApi.setApplicationName("QueryExample");
//Will store all of the parsed defect data
JSONArray defectData = new JSONArray();
try{
QueryRequest defects = new QueryRequest("defect");
defects.setFetch(new Fetch("FormattedID","Discussion","Resolution"));
defects.setQueryFilter(new QueryFilter("Resolution","=","Configuration Change")); …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何通过“if”语句向 JTable 添加逻辑,该语句检查是否选择了任何行。我知道如何检查是否选择了特定行,但我似乎无法弄清楚如何检查所有行。
if(tbl.isRowSelected(0)){
Run Code Online (Sandbox Code Playgroud)
显然,这是检查特定行。
我也试过类似的东西
if(tbl.isRowSelected(0-2000)){
Run Code Online (Sandbox Code Playgroud)
这不起作用,我也不希望它起作用。
这样做的原因是我正在设置表格,以便当用户单击一行然后点击“编辑”按钮时,将出现第二个表格,其中包含与他们选择的行相关的更多数据。(这里在哈希映射中使用 2D 数组变得复杂,但我首先需要解决这个简单的问题)。
我在这里先向您的帮助表示感谢!
我尝试寻找这个问题的答案并阅读 Regex Wiki,但我找不到我正在寻找的确切内容。
我有一个验证文档的程序。(这是别人写的)。
如果某些行或字符与正则表达式不匹配,则会生成错误。我注意到总是会产生一些错误的错误,我想纠正这个错误。我相信我已经将问题缩小为:
下面是一个例子:
此错误由程序逻辑标记:
ERROR: File header immediate origin name is invalid: CITIBANK, N.A.
Run Code Online (Sandbox Code Playgroud)
这是导致该错误的代码:
if(strLine.substring(63,86).matches("[A-Z,a-z,0-9, ]+")){
}else{
JOptionPane.showMessageDialog(null, "ERROR: File header immediate origin name is invalid: "+strLine.substring(63,86));
errorFound=true;
fileHeaderErrorFound=true;
bw.write("ERROR: File header immediate origin name is invalid: "+strLine.substring(63,86));
bw.newLine();
Run Code Online (Sandbox Code Playgroud)
我相信在运行时调用错误的原因是因为文本包含句点和逗号..我不确定如何在正则表达式中允许这些。
我试过用这个
if(strLine.substring(63,86).matches("[A-Z,a-z,0-9,,,. ]+")){
Run Code Online (Sandbox Code Playgroud)
它似乎有效,我只是想确保这是正确的方法,因为它看起来不正确。
我正在尝试用我的程序解决一个奇怪的问题。该程序创建了一系列GUI和JTable,使用户能够生成XML文件。这些表之一是用于创建“语句”的。除了将数据存储在多个2D数组中(依次存储在哈希图中)之外,我将不做进一步的详细介绍。
这是发生了什么。当用户进入Statement屏幕时,将使用2D数组中的内容生成JTable。该数据填充用户能够修改的单元格。这些单元格之一(也是最重要的)是数量。他们为行设置的数量与另一个类的其他数量非常匹配。
表格底部是一个“完成”按钮。当用户单击此按钮时,逻辑将检查金额是否匹配。如果这样做,则程序将使用任何更改的值更新2D数组并处理JTable。
我的问题是,一旦用户更新了单元并单击“完成”,最后所做的更新将不起作用。本质上,用户必须首先单击表中的其他位置,然后点击完成。我希望此操作自动发生,以便当用户单击“完成”的单元格时停止编辑。这是完成按钮的代码:
finishedButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
//Creates another table model for the finished button logic.
DefaultTableModel dm = (DefaultTableModel)StatementGUI.tbl.getModel();
//Gets the total number of table rows.
int rows = dm.getRowCount();
//Creates a variable to store the statement transaction total.
double statementTransactionTotal=0;
//For each row in the table.
for(int i = 0; i < dm.getRowCount(); i++){
//Gets the total of all transactions in the table.
String currentTotal = tbl.getValueAt(i, 3).toString();
Double currentTotalDouble = Double.parseDouble(currentTotal);
statementTransactionTotal=statementTransactionTotal+currentTotalDouble;
}
//Creates …Run Code Online (Sandbox Code Playgroud)