Даже у меня было подобное требование - вызовите веб-сервис, если он не работает, повторите попытку 3 раза. Если это не удается даже после этих многочисленных испытаний, отправьте уведомление по электронной почте. После многопользовательской игры, anyMatch()
пришел как спаситель. Мой пример кода выглядит следующим образом. В следующем примере, если метод webServiceCall возвращает true в первой итерации, поток не выполняет итерацию по мере того, как мы вызвали anyMatch()
. Я считаю, это то, что вы ищете.
import java.util.stream.IntStream;
import io.netty.util.internal.ThreadLocalRandom;
class TrialStreamMatch {
public static void main(String[] args) {
if(!IntStream.range(1,3).anyMatch(integ -> webServiceCall(integ))){
//Code for sending email notifications
}
}
public static boolean webServiceCall(int i){
//For time being, I have written a code for generating boolean randomly
//This whole piece needs to be replaced by actual web-service client code
boolean bool = ThreadLocalRandom.current().nextBoolean();
System.out.println("Iteration index :: "+i+" bool :: "+bool);
//Return success status -- true or false
return bool;
}
Мы использовали http://opencsv.sourceforge.net/ с хорошим успехом
, я также столкнулся с другим вопросом с хорошими ссылками: lib Java или приложение для преобразования CSV в XML-файл?
Я могу рекомендовать SuperCSV. Простой использовать, и сделал все, в чем я нуждался.
Эй, у меня есть проект с открытым исходным кодом для этого: JFileHelpers. Я думаю, что основное преимущество состоит в том, что это использует Аннотации Java, смотрите:
, Если у Вас есть этот боб:
@FixedLengthRecord()
public class Customer {
@FieldFixedLength(4)
public Integer custId;
@FieldAlign(alignMode=AlignMode.Right)
@FieldFixedLength(20)
public String name;
@FieldFixedLength(3)
public Integer rating;
@FieldTrim(trimMode=TrimMode.Right)
@FieldFixedLength(10)
@FieldConverter(converter = ConverterKind.Date,
format = "dd-MM-yyyy")
public Date addedDate;
@FieldFixedLength(3)
@FieldOptional
public String stockSimbol;
}
И хочет проанализировать этот файл:
....|....1....|....2....|....3....|....4
1 Antonio Pereira 10012-12-1978ABC
2 Felipe Coury 201-01-2007
3 Anderson Polga 4212-11-2007DEF
Все, что необходимо сделать, является этим:
FileHelperEngine<Customer> engine =
new FileHelperEngine<Customer>(Customer.class);
List<Customer> customers =
new ArrayList<Customer>();
customers = engine.readResource(
"/samples/customers-fixed.txt");
кроме того, это поддерживает основную деталь, дату и преобразование формата, и многое другое. Сообщите мне то, что Вы думаете!
С наилучшими пожеланиями!
Я имел хороший успех и анализирующие и пишущие файлы CSV от Java с OpenCSV. Если Вы хотите прочитать или записать Excel совместимую электронную таблицу с Java, , библиотека POI от Apache является способом пойти.
Я нахожу Плоский корпус быть действительно хорошим с обработкой изворотливых файлов CSV (Escape, кавычки, плохие записи, и т.д.)
Файл CSV к вопросу XML, который задают ранее, кажется, отвечает на все мои вопросы.
OpenCSV ( http://opencsv.sourceforge.net/ ) также делает привязку к JavaBeans с помощью Стратегии
ColumnPositionMappingStrategy strat = new ColumnPositionMappingStrategy();
strat.setType(YourOrderBean.class);
String[] columns = new String[] {"name", "orderNumber", "id"}; // the fields to bind do in your JavaBean
strat.setColumnMapping(columns);
CsvToBean csv = new CsvToBean();
List list = csv.parse(strat, yourReader);
Отображения Позиции столбцов, JSEFA ( http://jsefa.sourceforge.net ) также, кажется, делает все, в чем я нуждаюсь - особенно обязательный к объектам Java - в дополнение к поддержке FLR и XML