int LogicDetailParser::findDate(Task& task, string text){
	int day, month, year;
	day = month = year = NOTSTATED;

	if(parserDate(text, day, month, year)){
		if(year < YEARCHECK)
			year += TWOTHOUSAND;
		if(checkDate(day, month, year)){
			setTaskDate(task, day, month, year);
			return FOUND;
		}
		else
			return ERROR;
	}
	return NOTFOUND;
}
Пример #2
0
void GameTaskSystem::initGameTask( sqlite3* db )
{
	_sqlitedb = db;
	
	initGameProperty();
	initDayTaskTable();

	int today = NewDataMgr::getInstance()->convertTimeStrToNumber(CppCallJava::getInstance()->getSystemTime(), SystemTime_Day);
	int history = getTaskDate();

	// 当前天日期与历史日期对比

 	if ( today != history || _dayTaskList.empty())
	{
		setTaskDate( today );

		// 重新生成任务表
		cleanTaskProperty();
		createDayTaskList();
	}

}
bool LogicDetailParser::parser(Task& task, string text, string operation){
	int dateCheck;
	int timeCheck;
	string tempDate;
	string lowercaseText = textChangeLowercase(text);

	_hoursFlag = false;
	_taskDescription = text;
	_time = CANNOTFIND;
	_date = CANNOTFIND;

	getIndicators(lowercaseText);

	if(_slashPosition == NOTSTATED && _hrsPosition == NOTSTATED &&
		_dotPosition == NOTSTATED && _colonPosition == NOTSTATED &&
		_amPosition == NOTSTATED && _pmPosition == NOTSTATED){
			task.setTaskDescription(text);
			return true;
	}

	if(_slashPosition != NOTSTATED){
		dateCheck = findDate(task, lowercaseText);
		if(dateCheck == ERROR)
			return false;
		else if(dateCheck == FOUND){
			tempDate = _date;
			_taskDescription = trimFoundText(_taskDescription, _date);

			lowercaseText = textChangeLowercase(_taskDescription);
			getIndicators(lowercaseText);

			dateCheck = findDate(task, lowercaseText);
			if(dateCheck == ERROR)
				return false;
			else if(dateCheck == FOUND)
				_taskDescription = trimFoundText(_taskDescription, _date);
			else if(dateCheck == NOTFOUND)
				setTaskDate(task, task.getStartDay(), task.getStartMonth(), task.getStartYear());
		}
	}
	_date = tempDate;

	if(!findTime(task, textChangeLowercase(text)))
		return false;

	removeUnwantedText();
	if(_taskDescription.size() != POINTZERO)
		task.setTaskDescription(_taskDescription);

	if(operation == "change"){
		if(task.getStartDay() == task.getEndDay() && _hoursFlag)
			task.setEndDay(task.getStartDay() + POINTONE);
		return true;
	}

	if(operation == "add"){
		if(task.getStartDay() == task.getEndDay() && _hoursFlag)
			task.setEndDay(task.getStartDay() + POINTONE);

		if (_time != CANNOTFIND && _date != CANNOTFIND){}
		else if (_time == CANNOTFIND){
			task.setStartTime(900);
			task.setEndTime(1800);
		}
		else if (_date == CANNOTFIND)
			setDate(task);
		else
			//floating
			return false;
	}
}