![JAR search and dependency download from the Maven repository](/logo.png)
com.noga.njexl.testing.dataprovider.uri.URIDataSource Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of njexl.testing Show documentation
Show all versions of njexl.testing Show documentation
The Commons Jexl library is an implementation of the JSTL Expression Language with extensions.
This was customized by nmondal.
The newest version!
/**
* Copyright 2015 Nabarun Mondal
* 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 com.noga.njexl.testing.dataprovider.uri;
import com.noga.njexl.lang.extension.dataaccess.DataMatrix;
import com.noga.njexl.testing.dataprovider.DataSource;
import com.noga.njexl.testing.dataprovider.DataSourceTable;
import org.jsoup.Jsoup;
import org.jsoup.select.Elements;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Document;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
/**
* Implementation of {DataSource} for arbitrary URI
*/
public class URIDataSource extends DataSource{
public static class HTMLTable extends DataSourceTable{
DataSource dataSource ;
public final Element table;
ArrayList data;
public final int pos;
@Override
public DataSource dataSource() {
return dataSource;
}
@Override
public String name() {
return Integer.toString(pos);
}
@Override
public int length() {
return data.size();
}
@Override
public String[] row(int rowIndex) {
return data.get(rowIndex);
}
private void populateData(){
for (Element row : table.select("tr")) {
int colSize = 0;
ArrayList cols = new ArrayList<>();
for (Element col : row.children()) {
colSize++;
cols.add( col.text());
}
String[] d = new String[colSize];
d = cols.toArray(d);
data.add(d);
}
}
public HTMLTable(URIDataSource dataSource, Element table, int pos) {
data = new ArrayList<>();
this.dataSource = dataSource;
this.table = table;
this.pos = pos ;
populateData();
}
}
public static final Pattern LOADER_PATTERN_1 = Pattern.compile("^http[s]?://.+", Pattern.CASE_INSENSITIVE);
public static final Pattern LOADER_PATTERN_2 = Pattern.compile(".*html>.*|.* init(String location) throws Exception {
HashMap tables = new HashMap<>();
try {
URL url = new URL(location);
doc = Jsoup.parse(url, 30000);
}catch (MalformedURLException e){
// perhaps data as HTML String ?
doc = Jsoup.parse( location );
}
int pos = 0 ;
Elements elements = doc.select("table");
for ( Element elem : elements ){
HTMLTable table = new HTMLTable( this, elem,pos++);
tables.put( table.name(), table);
}
return tables;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy