"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TaskEditValidator = void 0;
/********************************************************************************
 * Copyright (c) 2023 EclipseSource and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/
const server_1 = require("@eclipse-glsp/server");
const inversify_1 = require("inversify");
const task_edit_context_provider_1 = require("./task-edit-context-provider");
let TaskEditValidator = class TaskEditValidator {
    constructor() {
        this.contextId = 'task-editor';
    }
    validate(action) {
        const text = action.text;
        if (text.startsWith(task_edit_context_provider_1.TaskEditContextActionProvider.DURATION_PREFIX)) {
            const durationString = text.substring(task_edit_context_provider_1.TaskEditContextActionProvider.DURATION_PREFIX.length);
            const duration = Number.parseInt(durationString, 10);
            if (Number.isNaN(duration)) {
                return { severity: server_1.ValidationStatus.Severity.ERROR, message: `'${durationString}' is not a valid number.` };
            }
            else if (duration < 0 || duration > 100) {
                return { severity: server_1.ValidationStatus.Severity.WARNING, message: `'${durationString}' should be between 0 and 100` };
            }
        }
        else if (text.startsWith(task_edit_context_provider_1.TaskEditContextActionProvider.TYPE_PREFIX)) {
            const typeString = text.substring(task_edit_context_provider_1.TaskEditContextActionProvider.TYPE_PREFIX.length);
            if (typeString !== 'automated' && typeString !== 'manual') {
                return {
                    severity: server_1.ValidationStatus.Severity.ERROR,
                    message: `'Type of task can only be manual or automatic. You entered '${typeString}'.`
                };
            }
        }
        return server_1.ValidationStatus.NONE;
    }
};
TaskEditValidator = __decorate([
    (0, inversify_1.injectable)()
], TaskEditValidator);
exports.TaskEditValidator = TaskEditValidator;
//# sourceMappingURL=task-edit-validator.js.map