/*
* Zed Attack Proxy (ZAP) and its related class files.
*
* ZAP is an HTTP/HTTPS proxy for assessing web application security.
*
* Copyright 2015 The ZAP Development Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.zaproxy.zap.view;
import java.util.ArrayList;
import java.util.List;
import org.parosproxy.paros.Constant;
import org.zaproxy.zap.model.Context;
import org.zaproxy.zap.model.StructuralNodeModifier;
/**
* A table model for holding a set of structural node modifiers, for a {@link Context}.
* @since 2.4.3
*/
public class StructuralNodeModifiersTableModel extends AbstractMultipleOptionsTableModel<StructuralNodeModifier> {
/** The Constant defining the table column names. */
private static final String[] COLUMN_NAMES = {
Constant.messages.getString("context.ddn.table.header.type"),
Constant.messages.getString("context.ddn.table.header.name"),
Constant.messages.getString("context.ddn.table.header.regex") };
/** The Constant serialVersionUID. */
private static final long serialVersionUID = 4463944219657112162L;
/** The users. */
private List<StructuralNodeModifier> snms = new ArrayList<StructuralNodeModifier>();
/**
* Instantiates a new structural node modifiers table model. An internal copy of the provided list is stored.
*
* @param snms the structural node modifiers
*/
public StructuralNodeModifiersTableModel(List<StructuralNodeModifier> snms) {
this.snms = new ArrayList<>(snms);
}
/**
* Instantiates a new user table model.
*/
public StructuralNodeModifiersTableModel() {
this.snms = new ArrayList<>();
}
@Override
public int getColumnCount() {
return COLUMN_NAMES.length;
}
@Override
public int getRowCount() {
return snms.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
switch (snms.get(rowIndex).getType()) {
case StructuralParameter: return Constant.messages.getString("context.ddn.table.type.struct");
case DataDrivenNode: return Constant.messages.getString("context.ddn.table.type.data");
}
return null;
case 1:
return snms.get(rowIndex).getName();
case 2:
if (snms.get(rowIndex).getPattern() != null) {
return snms.get(rowIndex).getPattern().pattern();
}
return null;
default:
return null;
}
}
@Override
public List<StructuralNodeModifier> getElements() {
return snms;
}
/**
* Gets the internal list of users managed by this model.
*
* @return the users
*/
public List<StructuralNodeModifier> getStructuralNodeModifiers() {
return snms;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
/**
* Sets a new list of structural node modifiers for this model. An internal copy of the provided list is stored.
*
* @param snms the new structural node modifiers
*/
public void setStructuralNodeModifiers(List<StructuralNodeModifier> snms) {
this.snms = new ArrayList<>(snms);
this.fireTableDataChanged();
}
public void addStructuralNodeModifiers(List<StructuralNodeModifier> snms) {
this.snms.addAll(snms);
this.fireTableDataChanged();
}
/**
* Removes all the structural node modifiers for this model.
*/
public void removeAllStructuralNodeModifiers(){
this.snms=new ArrayList<>();
this.fireTableDataChanged();
}
/**
* Adds a new structural node modifiers to this model
*
* @param snm the structural node modifier
*/
public void addStructuralNodeModifier(StructuralNodeModifier snm){
this.snms.add(snm);
this.fireTableRowsInserted(this.snms.size()-1, this.snms.size()-1);
}
@Override
public Class<?> getColumnClass(int columnIndex) {
return String.class;
}
@Override
public String getColumnName(int column) {
return COLUMN_NAMES[column];
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
}
}